ea961c3d72
Route calls during node initialization and shutdown that would happen between a node process and wallet processes through the serializable `Chain::Client` interface, rather than `WalletInitInterface` which is now simpler and only deals with early initialization and parameter interaction. This commit mostly does not change behavior. The only change is that the "Wallet disabled!" and "No wallet support compiled in!" messages are now logged earlier during startup.
55 lines
1.8 KiB
C++
55 lines
1.8 KiB
C++
// 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.
|
|
|
|
#include <stdio.h>
|
|
#include <util/system.h>
|
|
#include <walletinitinterface.h>
|
|
|
|
class CWallet;
|
|
|
|
class DummyWalletInit : public WalletInitInterface {
|
|
public:
|
|
|
|
bool HasWalletSupport() const override {return false;}
|
|
void AddWalletOptions() const override;
|
|
bool ParameterInteraction() const override {return true;}
|
|
void Construct(InitInterfaces& interfaces) const override {LogPrintf("No wallet support compiled in!\n");}
|
|
};
|
|
|
|
void DummyWalletInit::AddWalletOptions() const
|
|
{
|
|
std::vector<std::string> opts = {"-addresstype", "-changetype", "-disablewallet", "-discardfee=<amt>", "-fallbackfee=<amt>",
|
|
"-keypool=<n>", "-mintxfee=<amt>", "-paytxfee=<amt>", "-rescan", "-salvagewallet", "-spendzeroconfchange", "-txconfirmtarget=<n>",
|
|
"-upgradewallet", "-wallet=<path>", "-walletbroadcast", "-walletdir=<dir>", "-walletnotify=<cmd>", "-walletrbf", "-zapwallettxes=<mode>",
|
|
"-dblogsize=<n>", "-flushwallet", "-privdb", "-walletrejectlongchains"};
|
|
gArgs.AddHiddenArgs(opts);
|
|
}
|
|
|
|
const WalletInitInterface& g_wallet_init_interface = DummyWalletInit();
|
|
|
|
fs::path GetWalletDir()
|
|
{
|
|
throw std::logic_error("Wallet function called in non-wallet build.");
|
|
}
|
|
|
|
std::vector<fs::path> ListWalletDir()
|
|
{
|
|
throw std::logic_error("Wallet function called in non-wallet build.");
|
|
}
|
|
|
|
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
|