Changeset View
Changeset View
Standalone View
Standalone View
src/interfaces/node.h
// Copyright (c) 2018 The Bitcoin Core developers | // Copyright (c) 2018 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_INTERFACES_NODE_H | #ifndef BITCOIN_INTERFACES_NODE_H | ||||
#define BITCOIN_INTERFACES_NODE_H | #define BITCOIN_INTERFACES_NODE_H | ||||
#include <init.h> // For HelpMessageMode | #include <init.h> // For HelpMessageMode | ||||
#include <net.h> // For CConnman::NumConnections | |||||
#include <netaddress.h> // For Network | #include <netaddress.h> // For Network | ||||
#include <cstddef> | |||||
#include <cstdint> | |||||
#include <functional> | #include <functional> | ||||
#include <memory> | #include <memory> | ||||
#include <string> | #include <string> | ||||
class Config; | class Config; | ||||
class HTTPRPCRequestProcessor; | class HTTPRPCRequestProcessor; | ||||
class proxyType; | class proxyType; | ||||
class RPCServer; | class RPCServer; | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | public: | ||||
virtual std::string helpMessage(HelpMessageMode mode) = 0; | virtual std::string helpMessage(HelpMessageMode mode) = 0; | ||||
//! Map port. | //! Map port. | ||||
virtual void mapPort(bool use_upnp) = 0; | virtual void mapPort(bool use_upnp) = 0; | ||||
//! Get proxy. | //! Get proxy. | ||||
virtual bool getProxy(Network net, proxyType &proxy_info) = 0; | virtual bool getProxy(Network net, proxyType &proxy_info) = 0; | ||||
//! Get number of connections. | |||||
virtual size_t getNodeCount(CConnman::NumConnections flags) = 0; | |||||
//! Get total bytes recv. | |||||
virtual int64_t getTotalBytesRecv() = 0; | |||||
//! Get total bytes sent. | |||||
virtual int64_t getTotalBytesSent() = 0; | |||||
//! Get mempool size. | |||||
virtual size_t getMempoolSize() = 0; | |||||
//! Get mempool dynamic usage. | |||||
virtual size_t getMempoolDynamicUsage() = 0; | |||||
//! Get header tip height and time. | |||||
virtual bool getHeaderTip(int &height, int64_t &block_time) = 0; | |||||
//! Get num blocks. | |||||
virtual int getNumBlocks() = 0; | |||||
//! Get last block time. | |||||
virtual int64_t getLastBlockTime() = 0; | |||||
//! Get verification progress. | |||||
virtual double getVerificationProgress() = 0; | |||||
//! Is initial block download. | |||||
virtual bool isInitialBlockDownload() = 0; | |||||
//! Get reindex. | |||||
virtual bool getReindex() = 0; | |||||
//! Get importing. | |||||
virtual bool getImporting() = 0; | |||||
//! Set network active. | |||||
virtual void setNetworkActive(bool active) = 0; | |||||
//! Get network active. | |||||
virtual bool getNetworkActive() = 0; | |||||
//! Register handler for init messages. | //! Register handler for init messages. | ||||
using InitMessageFn = std::function<void(const std::string &message)>; | using InitMessageFn = std::function<void(const std::string &message)>; | ||||
virtual std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) = 0; | virtual std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) = 0; | ||||
//! Register handler for message box messages. | //! Register handler for message box messages. | ||||
using MessageBoxFn = | using MessageBoxFn = | ||||
std::function<bool(const std::string &message, | std::function<bool(const std::string &message, | ||||
const std::string &caption, unsigned int style)>; | const std::string &caption, unsigned int style)>; | ||||
virtual std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) = 0; | virtual std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) = 0; | ||||
//! Register handler for question messages. | //! Register handler for question messages. | ||||
using QuestionFn = std::function<bool( | using QuestionFn = std::function<bool( | ||||
const std::string &message, const std::string &non_interactive_message, | const std::string &message, const std::string &non_interactive_message, | ||||
const std::string &caption, unsigned int style)>; | const std::string &caption, unsigned int style)>; | ||||
virtual std::unique_ptr<Handler> handleQuestion(QuestionFn fn) = 0; | virtual std::unique_ptr<Handler> handleQuestion(QuestionFn fn) = 0; | ||||
//! Register handler for progress messages. | //! Register handler for progress messages. | ||||
using ShowProgressFn = std::function<void( | using ShowProgressFn = std::function<void( | ||||
const std::string &title, int progress, bool resume_possible)>; | const std::string &title, int progress, bool resume_possible)>; | ||||
virtual std::unique_ptr<Handler> handleShowProgress(ShowProgressFn fn) = 0; | virtual std::unique_ptr<Handler> handleShowProgress(ShowProgressFn fn) = 0; | ||||
//! Register handler for load wallet messages. | //! Register handler for load wallet messages. | ||||
using LoadWalletFn = std::function<void(std::unique_ptr<Wallet> wallet)>; | using LoadWalletFn = std::function<void(std::unique_ptr<Wallet> wallet)>; | ||||
virtual std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) = 0; | virtual std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) = 0; | ||||
//! Register handler for number of connections changed messages. | |||||
using NotifyNumConnectionsChangedFn = | |||||
std::function<void(int new_num_connections)>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) = 0; | |||||
//! Register handler for network active messages. | |||||
using NotifyNetworkActiveChangedFn = | |||||
std::function<void(bool network_active)>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleNotifyNetworkActiveChanged(NotifyNetworkActiveChangedFn fn) = 0; | |||||
//! Register handler for notify alert messages. | |||||
using NotifyAlertChangedFn = std::function<void()>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleNotifyAlertChanged(NotifyAlertChangedFn fn) = 0; | |||||
//! Register handler for ban list messages. | |||||
using BannedListChangedFn = std::function<void()>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleBannedListChanged(BannedListChangedFn fn) = 0; | |||||
//! Register handler for block tip messages. | |||||
using NotifyBlockTipFn = | |||||
std::function<void(bool initial_download, int height, | |||||
int64_t block_time, double verification_progress)>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleNotifyBlockTip(NotifyBlockTipFn fn) = 0; | |||||
//! Register handler for header tip messages. | |||||
using NotifyHeaderTipFn = | |||||
std::function<void(bool initial_download, int height, | |||||
int64_t block_time, double verification_progress)>; | |||||
virtual std::unique_ptr<Handler> | |||||
handleNotifyHeaderTip(NotifyHeaderTipFn fn) = 0; | |||||
}; | }; | ||||
//! Return implementation of Node interface. | //! Return implementation of Node interface. | ||||
std::unique_ptr<Node> MakeNode(); | std::unique_ptr<Node> MakeNode(); | ||||
} // namespace interfaces | } // namespace interfaces | ||||
#endif // BITCOIN_INTERFACES_NODE_H | #endif // BITCOIN_INTERFACES_NODE_H |