Branch data Line data Source code
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 : :
12 : : class CNetMsgMaker
13 : : {
14 : : public:
15 : 0 : explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){}
16 : :
17 : : template <typename... Args>
18 : 0 : CSerializedNetMsg Make(int nFlags, std::string msg_type, Args&&... args) const
19 : : {
20 : 0 : CSerializedNetMsg msg;
21 : 0 : msg.m_type = std::move(msg_type);
22 [ # # ][ # # ]: 0 : CVectorWriter{nFlags | nVersion, msg.data, 0, std::forward<Args>(args)...};
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
23 : 0 : return msg;
24 [ # # ][ # # ]: 0 : }
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
25 : :
26 : : template <typename... Args>
27 : 0 : CSerializedNetMsg Make(std::string msg_type, Args&&... args) const
28 : : {
29 [ # # ][ # # ]: 0 : return Make(0, std::move(msg_type), std::forward<Args>(args)...);
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
30 : 0 : }
31 : :
32 : : private:
33 : : const int nVersion;
34 : : };
35 : :
36 : : #endif // BITCOIN_NETMESSAGEMAKER_H
|