[build] remove #ifdef ENABLE_WALLET from interfaces/node

Removes the final #ifdef ENABLE_WALLET from libbitcoin_server by calling
g_wallet_init_interface.HasWalletSupport(), and redifining GetWallets()
and MakeWallet() in dummywallet.cpp.
This commit is contained in:
John Newbery 2018-09-12 10:05:00 -04:00
parent 8f464549c4
commit e4ef4b4595
3 changed files with 27 additions and 15 deletions

View file

@ -6,6 +6,8 @@
#include <util.h> #include <util.h>
#include <walletinitinterface.h> #include <walletinitinterface.h>
class CWallet;
class DummyWalletInit : public WalletInitInterface { class DummyWalletInit : public WalletInitInterface {
public: public:
@ -31,3 +33,19 @@ void DummyWalletInit::AddWalletOptions() const
} }
const WalletInitInterface& g_wallet_init_interface = DummyWalletInit(); const WalletInitInterface& g_wallet_init_interface = DummyWalletInit();
std::vector<std::shared_ptr<CWallet>> GetWallets()
{
throw std::logic_error("Wallet function called in non-wallet build.");
}
namespace interfaces {
class Wallet;
std::unique_ptr<Wallet> MakeWallet(const std::shared_ptr<CWallet>& wallet)
{
throw std::logic_error("Wallet function called in non-wallet build.");
}
} // namespace interfaces

View file

@ -32,19 +32,18 @@
#if defined(HAVE_CONFIG_H) #if defined(HAVE_CONFIG_H)
#include <config/bitcoin-config.h> #include <config/bitcoin-config.h>
#endif #endif
#ifdef ENABLE_WALLET
#include <wallet/fees.h>
#include <wallet/wallet.h>
#define CHECK_WALLET(x) x
#else
#define CHECK_WALLET(x) throw std::logic_error("Wallet function called in non-wallet build.")
#endif
#include <atomic> #include <atomic>
#include <boost/thread/thread.hpp> #include <boost/thread/thread.hpp>
#include <univalue.h> #include <univalue.h>
class CWallet;
std::vector<std::shared_ptr<CWallet>> GetWallets();
namespace interfaces { namespace interfaces {
class Wallet;
namespace { namespace {
class NodeImpl : public Node class NodeImpl : public Node
@ -221,15 +220,11 @@ class NodeImpl : public Node
} }
std::vector<std::unique_ptr<Wallet>> getWallets() override std::vector<std::unique_ptr<Wallet>> getWallets() override
{ {
#ifdef ENABLE_WALLET
std::vector<std::unique_ptr<Wallet>> wallets; std::vector<std::unique_ptr<Wallet>> wallets;
for (const std::shared_ptr<CWallet>& wallet : GetWallets()) { for (const std::shared_ptr<CWallet>& wallet : GetWallets()) {
wallets.emplace_back(MakeWallet(wallet)); wallets.emplace_back(MakeWallet(wallet));
} }
return wallets; return wallets;
#else
throw std::logic_error("Node::getWallets() called in non-wallet build.");
#endif
} }
std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) override std::unique_ptr<Handler> handleInitMessage(InitMessageFn fn) override
{ {
@ -249,8 +244,7 @@ class NodeImpl : public Node
} }
std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) override std::unique_ptr<Handler> handleLoadWallet(LoadWalletFn fn) override
{ {
CHECK_WALLET( return MakeHandler(::uiInterface.LoadWallet_connect([fn](std::shared_ptr<CWallet> wallet) { fn(MakeWallet(wallet)); }));
return MakeHandler(::uiInterface.LoadWallet_connect([fn](std::shared_ptr<CWallet> wallet) { fn(MakeWallet(wallet)); })));
} }
std::unique_ptr<Handler> handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) override std::unique_ptr<Handler> handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) override
{ {

View file

@ -366,8 +366,8 @@ struct WalletTxOut
bool is_spent = false; bool is_spent = false;
}; };
//! Return implementation of Wallet interface. This function will be undefined //! Return implementation of Wallet interface. This function is defined in
//! in builds where ENABLE_WALLET is false. //! dummywallet.cpp and throws if the wallet component is not compiled.
std::unique_ptr<Wallet> MakeWallet(const std::shared_ptr<CWallet>& wallet); std::unique_ptr<Wallet> MakeWallet(const std::shared_ptr<CWallet>& wallet);
} // namespace interfaces } // namespace interfaces