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 : 6993 : explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){}
16 : :
17 : : template <typename... Args>
18 : 6993 : CSerializedNetMsg Make(int nFlags, std::string msg_type, Args&&... args) const
19 : : {
20 : 6993 : CSerializedNetMsg msg;
21 : 6993 : msg.m_type = std::move(msg_type);
22 [ # # # # : 6993 : CVectorWriter{nFlags | nVersion, msg.data, 0, std::forward<Args>(args)...};
# # + - #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # ]
23 : 6993 : return msg;
24 [ # # # # : 6993 : }
# # + - #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # ]
25 : :
26 : : template <typename... Args>
27 : 6993 : CSerializedNetMsg Make(std::string msg_type, Args&&... args) const
28 : : {
29 [ # # # # : 6993 : 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
|