// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2020 The Bitcoin Core developers // Copyright (c) 2016-2024 The Hush developers // Distributed under the GPLv3 software license, see the accompanying // file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html #ifndef HUSH_NETMESSAGEMAKER_H #define HUSH_NETMESSAGEMAKER_H #include #include class CNetMsgMaker { public: explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){} template CSerializedNetMsg Make(int nFlags, std::string msg_type, Args&&... args) const { CSerializedNetMsg msg; msg.m_type = std::move(msg_type); CVectorWriter{ SER_NETWORK, nFlags | nVersion, msg.data, 0, std::forward(args)... }; return msg; } template CSerializedNetMsg Make(std::string msg_type, Args&&... args) const { return Make(0, std::move(msg_type), std::forward(args)...); } private: const int nVersion; }; #endif // HUSH_NETMESSAGEMAKER_H