Changeset View
Changeset View
Standalone View
Standalone View
src/interface/node.h
- This file was added.
// Copyright (c) 2018 The Bitcoin Core developers | |||||
// Distributed under the MIT software license, see the accompanying | |||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | |||||
#ifndef BITCOIN_INTERFACE_NODE_H | |||||
#define BITCOIN_INTERFACE_NODE_H | |||||
#include <functional> | |||||
#include <memory> | |||||
#include <string> | |||||
class Config; | |||||
class HTTPRPCRequestProcessor; | |||||
class RPCServer; | |||||
namespace interface { | |||||
class Handler; | |||||
//! Top-level interface for a bitcoin node (bitcoind process). | |||||
class Node { | |||||
public: | |||||
virtual ~Node() {} | |||||
//! Set command line arguments. | |||||
virtual void parseParameters(int argc, const char *const argv[]) = 0; | |||||
//! Load settings from configuration file. | |||||
virtual void readConfigFile(const std::string &conf_path) = 0; | |||||
//! Choose network parameters. | |||||
virtual void selectParams(const std::string &network) = 0; | |||||
//! Init logging. | |||||
virtual void initLogging() = 0; | |||||
//! Init parameter interaction. | |||||
virtual void initParameterInteraction() = 0; | |||||
//! Get warnings. | |||||
virtual std::string getWarnings(const std::string &type) = 0; | |||||
//! Initialize app dependencies. | |||||
virtual bool baseInitialize(Config &config, RPCServer &rpcServer) = 0; | |||||
//! Start node. | |||||
virtual bool | |||||
appInitMain(Config &config, | |||||
HTTPRPCRequestProcessor &httpRPCRequestProcessor) = 0; | |||||
//! Stop node. | |||||
virtual void appShutdown() = 0; | |||||
//! Start shutdown. | |||||
virtual void startShutdown() = 0; | |||||
//! Register handler for init messages. | |||||
using InitMessageFn = std::function<void(const std::string &message)>; | |||||
virtual std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) = 0; | |||||
}; | |||||
//! Return implementation of Node interface. | |||||
std::unique_ptr<Node> MakeNode(); | |||||
} // namespace interface | |||||
#endif // BITCOIN_INTERFACE_NODE_H |