Bitcoin Core  22.99.0
P2P Digital Currency
netmessagemaker.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2020 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef BITCOIN_NETMESSAGEMAKER_H
7 #define BITCOIN_NETMESSAGEMAKER_H
8 
9 #include <net.h>
10 #include <serialize.h>
11 
13 {
14 public:
15  explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){}
16 
17  template <typename... Args>
18  CSerializedNetMsg Make(int nFlags, std::string msg_type, Args&&... args) const
19  {
21  msg.m_type = std::move(msg_type);
22  CVectorWriter{ SER_NETWORK, nFlags | nVersion, msg.data, 0, std::forward<Args>(args)... };
23  return msg;
24  }
25 
26  template <typename... Args>
27  CSerializedNetMsg Make(std::string msg_type, Args&&... args) const
28  {
29  return Make(0, std::move(msg_type), std::forward<Args>(args)...);
30  }
31 
32 private:
33  const int nVersion;
34 };
35 
36 #endif // BITCOIN_NETMESSAGEMAKER_H
CVectorWriter
Definition: streams.h:72
CSerializedNetMsg::data
std::vector< unsigned char > data
Definition: net.h:109
CSerializedNetMsg::m_type
std::string m_type
Definition: net.h:110
CSerializedNetMsg
Definition: net.h:100
CNetMsgMaker
Definition: netmessagemaker.h:12
CNetMsgMaker::Make
CSerializedNetMsg Make(std::string msg_type, Args &&... args) const
Definition: netmessagemaker.h:27
serialize.h
SER_NETWORK
@ SER_NETWORK
Definition: serialize.h:138
CNetMsgMaker::nVersion
const int nVersion
Definition: netmessagemaker.h:33
CNetMsgMaker::Make
CSerializedNetMsg Make(int nFlags, std::string msg_type, Args &&... args) const
Definition: netmessagemaker.h:18
net.h
CNetMsgMaker::CNetMsgMaker
CNetMsgMaker(int nVersionIn)
Definition: netmessagemaker.h:15