Changeset View
Changeset View
Standalone View
Standalone View
src/interfaces/node.cpp
// 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. | ||||
#include <interfaces/node.h> | #include <interfaces/node.h> | ||||
#include <chainparams.h> | #include <chainparams.h> | ||||
#include <config.h> | #include <config.h> | ||||
#include <init.h> | #include <init.h> | ||||
#include <interfaces/handler.h> | #include <interfaces/handler.h> | ||||
#include <interfaces/wallet.h> | |||||
#include <net.h> | #include <net.h> | ||||
#include <netaddress.h> | #include <netaddress.h> | ||||
#include <netbase.h> | #include <netbase.h> | ||||
#include <scheduler.h> | #include <scheduler.h> | ||||
#include <ui_interface.h> | #include <ui_interface.h> | ||||
#include <util.h> | #include <util.h> | ||||
#include <warnings.h> | #include <warnings.h> | ||||
#if defined(HAVE_CONFIG_H) | |||||
#include <config/bitcoin-config.h> | |||||
#endif | |||||
#ifdef ENABLE_WALLET | |||||
#define CHECK_WALLET(x) x | |||||
#else | |||||
#define CHECK_WALLET(x) \ | |||||
throw std::logic_error("Wallet function called in non-wallet build.") | |||||
#endif | |||||
#include <boost/thread/thread.hpp> | #include <boost/thread/thread.hpp> | ||||
class CWallet; | |||||
class HTTPRPCRequestProcessor; | class HTTPRPCRequestProcessor; | ||||
namespace interfaces { | namespace interfaces { | ||||
namespace { | namespace { | ||||
class NodeImpl : public Node { | class NodeImpl : public Node { | ||||
void parseParameters(int argc, const char *const argv[]) override { | void parseParameters(int argc, const char *const argv[]) override { | ||||
gArgs.ParseParameters(argc, argv); | gArgs.ParseParameters(argc, argv); | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | class NodeImpl : public Node { | ||||
return MakeHandler(::uiInterface.InitMessage.connect(fn)); | return MakeHandler(::uiInterface.InitMessage.connect(fn)); | ||||
} | } | ||||
std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) override { | std::unique_ptr<Handler> handleMessageBox(MessageBoxFn fn) override { | ||||
return MakeHandler(::uiInterface.ThreadSafeMessageBox.connect(fn)); | return MakeHandler(::uiInterface.ThreadSafeMessageBox.connect(fn)); | ||||
} | } | ||||
std::unique_ptr<Handler> handleQuestion(QuestionFn fn) override { | std::unique_ptr<Handler> handleQuestion(QuestionFn fn) override { | ||||
return MakeHandler(::uiInterface.ThreadSafeQuestion.connect(fn)); | return MakeHandler(::uiInterface.ThreadSafeQuestion.connect(fn)); | ||||
} | } | ||||
std::unique_ptr<Handler> | |||||
handleShowProgress(ShowProgressFn fn) override { | |||||
return MakeHandler(::uiInterface.ShowProgress.connect(fn)); | |||||
} | |||||
std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) override { | |||||
CHECK_WALLET(return MakeHandler(::uiInterface.LoadWallet.connect( | |||||
[fn](CWallet *wallet) { fn(MakeWallet(*wallet)); }))); | |||||
} | |||||
}; | }; | ||||
} // namespace | } // namespace | ||||
std::unique_ptr<Node> MakeNode() { | std::unique_ptr<Node> MakeNode() { | ||||
return std::make_unique<NodeImpl>(); | return std::make_unique<NodeImpl>(); | ||||
} | } | ||||
} // namespace interfaces | } // namespace interfaces |