PIVX Core  5.6.99
P2P Digital Currency
netmessagemaker.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2016 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 PIVX_NETMESSAGEMAKER_H
7 #define PIVX_NETMESSAGEMAKER_H
8 
9 #include "serialize.h"
10 
12 {
13 public:
14  explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){}
15 
16  template <typename... Args>
17  CSerializedNetMsg Make(int nFlags, std::string sCommand, Args&&... args)
18  {
20  msg.command = std::move(sCommand);
21  msg.data.reserve(4 * 1024);
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 sCommand, Args&&... args)
28  {
29  return Make(0, std::move(sCommand), std::forward<Args>(args)...);
30  }
31 
32 private:
33  const int nVersion;
34 };
35 
36 #endif // PIVX_NETMESSAGEMAKER_H
const int nVersion
CSerializedNetMsg Make(std::string sCommand, Args &&... args)
CNetMsgMaker(int nVersionIn)
CSerializedNetMsg Make(int nFlags, std::string sCommand, Args &&... args)
@ SER_NETWORK
Definition: serialize.h:174
std::string command
Definition: net.h:140
std::vector< unsigned char > data
Definition: net.h:139