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