diff options
Diffstat (limited to 'src')
69 files changed, 311 insertions, 335 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 605c932120..f82248fbed 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -105,9 +105,9 @@ BITCOIN_CORE_H = \ httpserver.h \ indirectmap.h \ init.h \ - interface/handler.h \ - interface/node.h \ - interface/wallet.h \ + interfaces/handler.h \ + interfaces/node.h \ + interfaces/wallet.h \ key.h \ key_io.h \ keystore.h \ @@ -172,7 +172,6 @@ BITCOIN_CORE_H = \ wallet/db.h \ wallet/feebumper.h \ wallet/fees.h \ - wallet/init.h \ wallet/rpcwallet.h \ wallet/wallet.h \ wallet/walletdb.h \ @@ -249,7 +248,7 @@ endif libbitcoin_wallet_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) libbitcoin_wallet_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) libbitcoin_wallet_a_SOURCES = \ - interface/wallet.cpp \ + interfaces/wallet.cpp \ wallet/crypter.cpp \ wallet/db.cpp \ wallet/feebumper.cpp \ @@ -362,8 +361,8 @@ libbitcoin_util_a_SOURCES = \ compat/glibcxx_sanity.cpp \ compat/strnlen.cpp \ fs.cpp \ - interface/handler.cpp \ - interface/node.cpp \ + interfaces/handler.cpp \ + interfaces/node.cpp \ random.cpp \ rpc/protocol.cpp \ rpc/util.cpp \ diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 58518d611f..b00c2a6308 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -18,9 +18,6 @@ #include <httpserver.h> #include <httprpc.h> #include <utilstrencodings.h> -#if ENABLE_WALLET -#include <wallet/init.h> -#endif #include <walletinitinterface.h> #include <boost/thread.hpp> @@ -63,12 +60,6 @@ bool AppInit(int argc, char* argv[]) { bool fRet = false; -#if ENABLE_WALLET - g_wallet_init_interface.reset(new WalletInit); -#else - g_wallet_init_interface.reset(new DummyWalletInit); -#endif - // // Parameters // diff --git a/src/init.cpp b/src/init.cpp index 4bb2bc2c3e..811e59e362 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -72,7 +72,25 @@ static const bool DEFAULT_STOPAFTERBLOCKIMPORT = false; std::unique_ptr<CConnman> g_connman; std::unique_ptr<PeerLogicValidation> peerLogic; -std::unique_ptr<WalletInitInterface> g_wallet_init_interface; + +#if !(ENABLE_WALLET) +class DummyWalletInit : public WalletInitInterface { +public: + + std::string GetHelpString(bool showDebug) override {return std::string{};} + bool ParameterInteraction() override {return true;} + void RegisterRPC(CRPCTable &) override {} + bool Verify() override {return true;} + bool Open() override {return true;} + void Start(CScheduler& scheduler) override {} + void Flush() override {} + void Stop() override {} + void Close() override {} +}; + +static DummyWalletInit g_dummy_wallet_init; +WalletInitInterface* const g_wallet_init_interface = &g_dummy_wallet_init; +#endif #if ENABLE_ZMQ static CZMQNotificationInterface* pzmqNotificationInterface = nullptr; @@ -266,7 +284,6 @@ void Shutdown() GetMainSignals().UnregisterBackgroundSignalScheduler(); GetMainSignals().UnregisterWithMempoolSignals(mempool); g_wallet_init_interface->Close(); - g_wallet_init_interface.reset(); globalVerifyHandle.reset(); ECC_Stop(); LogPrintf("%s: done\n", __func__); @@ -615,6 +632,7 @@ void ThreadImport(std::vector<fs::path> vImportFiles) { const CChainParams& chainparams = Params(); RenameThread("bitcoin-loadblk"); + ScheduleBatchPriority(); { CImportingNow imp; diff --git a/src/init.h b/src/init.h index c93a210154..829c110112 100644 --- a/src/init.h +++ b/src/init.h @@ -13,7 +13,7 @@ class CScheduler; class CWallet; class WalletInitInterface; -extern std::unique_ptr<WalletInitInterface> g_wallet_init_interface; +extern WalletInitInterface* const g_wallet_init_interface; namespace boost { diff --git a/src/interface/README.md b/src/interfaces/README.md index e93b91d23c..e93b91d23c 100644 --- a/src/interface/README.md +++ b/src/interfaces/README.md diff --git a/src/interface/handler.cpp b/src/interfaces/handler.cpp index 4b27f374f4..1443fe9f18 100644 --- a/src/interface/handler.cpp +++ b/src/interfaces/handler.cpp @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include <interface/handler.h> +#include <interfaces/handler.h> #include <util.h> @@ -10,7 +10,7 @@ #include <memory> #include <utility> -namespace interface { +namespace interfaces { namespace { class HandlerImpl : public Handler @@ -30,4 +30,4 @@ std::unique_ptr<Handler> MakeHandler(boost::signals2::connection connection) return MakeUnique<HandlerImpl>(std::move(connection)); } -} // namespace interface +} // namespace interfaces diff --git a/src/interface/handler.h b/src/interfaces/handler.h index a76334bfbf..c4c674cac5 100644 --- a/src/interface/handler.h +++ b/src/interfaces/handler.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_INTERFACE_HANDLER_H -#define BITCOIN_INTERFACE_HANDLER_H +#ifndef BITCOIN_INTERFACES_HANDLER_H +#define BITCOIN_INTERFACES_HANDLER_H #include <memory> @@ -13,7 +13,7 @@ class connection; } // namespace signals2 } // namespace boost -namespace interface { +namespace interfaces { //! Generic interface for managing an event handler or callback function //! registered with another interface. Has a single disconnect method to cancel @@ -30,6 +30,6 @@ public: //! Return handler wrapping a boost signal connection. std::unique_ptr<Handler> MakeHandler(boost::signals2::connection connection); -} // namespace interface +} // namespace interfaces -#endif // BITCOIN_INTERFACE_HANDLER_H +#endif // BITCOIN_INTERFACES_HANDLER_H diff --git a/src/interface/node.cpp b/src/interfaces/node.cpp index f04da4e176..919748f942 100644 --- a/src/interface/node.cpp +++ b/src/interfaces/node.cpp @@ -2,15 +2,15 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include <interface/node.h> +#include <interfaces/node.h> #include <addrdb.h> #include <amount.h> #include <chain.h> #include <chainparams.h> #include <init.h> -#include <interface/handler.h> -#include <interface/wallet.h> +#include <interfaces/handler.h> +#include <interfaces/wallet.h> #include <net.h> #include <net_processing.h> #include <netaddress.h> @@ -43,7 +43,7 @@ #include <boost/thread/thread.hpp> #include <univalue.h> -namespace interface { +namespace interfaces { namespace { class NodeImpl : public Node @@ -305,4 +305,4 @@ class NodeImpl : public Node std::unique_ptr<Node> MakeNode() { return MakeUnique<NodeImpl>(); } -} // namespace interface +} // namespace interfaces diff --git a/src/interface/node.h b/src/interfaces/node.h index 6ae7f9e46c..f375af2f19 100644 --- a/src/interface/node.h +++ b/src/interfaces/node.h @@ -2,8 +2,8 @@ // 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 +#ifndef BITCOIN_INTERFACES_NODE_H +#define BITCOIN_INTERFACES_NODE_H #include <addrdb.h> // For banmap_t #include <amount.h> // For CAmount @@ -29,7 +29,7 @@ class proxyType; enum class FeeReason; struct CNodeStateStats; -namespace interface { +namespace interfaces { class Handler; class Wallet; @@ -254,6 +254,6 @@ public: //! Return implementation of Node interface. std::unique_ptr<Node> MakeNode(); -} // namespace interface +} // namespace interfaces -#endif // BITCOIN_INTERFACE_NODE_H +#endif // BITCOIN_INTERFACES_NODE_H diff --git a/src/interface/wallet.cpp b/src/interfaces/wallet.cpp index a6bce7d3de..0244fe70f5 100644 --- a/src/interface/wallet.cpp +++ b/src/interfaces/wallet.cpp @@ -2,12 +2,12 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include <interface/wallet.h> +#include <interfaces/wallet.h> #include <amount.h> #include <chain.h> #include <consensus/validation.h> -#include <interface/handler.h> +#include <interfaces/handler.h> #include <net.h> #include <policy/policy.h> #include <primitives/transaction.h> @@ -24,7 +24,7 @@ #include <memory> -namespace interface { +namespace interfaces { namespace { class PendingWalletTxImpl : public PendingWalletTx @@ -283,7 +283,7 @@ public: return result; } bool tryGetTxStatus(const uint256& txid, - interface::WalletTxStatus& tx_status, + interfaces::WalletTxStatus& tx_status, int& num_blocks, int64_t& adjusted_time) override { @@ -438,4 +438,4 @@ public: std::unique_ptr<Wallet> MakeWallet(CWallet& wallet) { return MakeUnique<WalletImpl>(wallet); } -} // namespace interface +} // namespace interfaces diff --git a/src/interface/wallet.h b/src/interfaces/wallet.h index b66ed63398..3e27242c2c 100644 --- a/src/interface/wallet.h +++ b/src/interfaces/wallet.h @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#ifndef BITCOIN_INTERFACE_WALLET_H -#define BITCOIN_INTERFACE_WALLET_H +#ifndef BITCOIN_INTERFACES_WALLET_H +#define BITCOIN_INTERFACES_WALLET_H #include <amount.h> // For CAmount #include <pubkey.h> // For CTxDestination (CKeyID and CScriptID) @@ -27,7 +27,7 @@ class CWallet; enum class OutputType; struct CRecipient; -namespace interface { +namespace interfaces { class Handler; class PendingWalletTx; @@ -347,6 +347,6 @@ struct WalletTxOut //! in builds where ENABLE_WALLET is false. std::unique_ptr<Wallet> MakeWallet(CWallet& wallet); -} // namespace interface +} // namespace interfaces -#endif // BITCOIN_INTERFACE_WALLET_H +#endif // BITCOIN_INTERFACES_WALLET_H diff --git a/src/qt/addresstablemodel.cpp b/src/qt/addresstablemodel.cpp index a9408895d9..1e3acd75c0 100644 --- a/src/qt/addresstablemodel.cpp +++ b/src/qt/addresstablemodel.cpp @@ -7,7 +7,7 @@ #include <qt/guiutil.h> #include <qt/walletmodel.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <key_io.h> #include <wallet/wallet.h> @@ -74,7 +74,7 @@ public: AddressTablePriv(AddressTableModel *_parent): parent(_parent) {} - void refreshAddressTable(interface::Wallet& wallet) + void refreshAddressTable(interfaces::Wallet& wallet) { cachedAddressTable.clear(); { diff --git a/src/qt/addresstablemodel.h b/src/qt/addresstablemodel.h index 954f0f593e..d7aeda9d8e 100644 --- a/src/qt/addresstablemodel.h +++ b/src/qt/addresstablemodel.h @@ -13,7 +13,7 @@ enum class OutputType; class AddressTablePriv; class WalletModel; -namespace interface { +namespace interfaces { class Wallet; } diff --git a/src/qt/bantablemodel.cpp b/src/qt/bantablemodel.cpp index cbd67d70ab..26cb03c2c7 100644 --- a/src/qt/bantablemodel.cpp +++ b/src/qt/bantablemodel.cpp @@ -8,7 +8,7 @@ #include <qt/guiconstants.h> #include <qt/guiutil.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <sync.h> #include <utiltime.h> @@ -46,7 +46,7 @@ public: Qt::SortOrder sortOrder; /** Pull a full list of banned nodes from CNode into our cache */ - void refreshBanlist(interface::Node& node) + void refreshBanlist(interfaces::Node& node) { banmap_t banMap; node.getBanned(banMap); @@ -82,7 +82,7 @@ public: } }; -BanTableModel::BanTableModel(interface::Node& node, ClientModel *parent) : +BanTableModel::BanTableModel(interfaces::Node& node, ClientModel *parent) : QAbstractTableModel(parent), m_node(node), clientModel(parent) diff --git a/src/qt/bantablemodel.h b/src/qt/bantablemodel.h index 4c171e6fbe..d6c8dbf6dd 100644 --- a/src/qt/bantablemodel.h +++ b/src/qt/bantablemodel.h @@ -15,7 +15,7 @@ class ClientModel; class BanTablePriv; -namespace interface { +namespace interfaces { class Node; } @@ -45,7 +45,7 @@ class BanTableModel : public QAbstractTableModel Q_OBJECT public: - explicit BanTableModel(interface::Node& node, ClientModel *parent = 0); + explicit BanTableModel(interfaces::Node& node, ClientModel *parent = 0); ~BanTableModel(); void startAutoRefresh(); void stopAutoRefresh(); @@ -71,7 +71,7 @@ public Q_SLOTS: void refresh(); private: - interface::Node& m_node; + interfaces::Node& m_node; ClientModel *clientModel; QStringList columns; std::unique_ptr<BanTablePriv> priv; diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 30d0acb7ef..f6714a8e18 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -27,17 +27,14 @@ #endif #include <init.h> -#include <interface/handler.h> -#include <interface/node.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> #include <rpc/server.h> #include <ui_interface.h> #include <uint256.h> #include <util.h> #include <warnings.h> -#ifdef ENABLE_WALLET -#include <wallet/init.h> -#endif #include <walletinitinterface.h> #include <memory> @@ -182,7 +179,7 @@ class BitcoinCore: public QObject { Q_OBJECT public: - explicit BitcoinCore(interface::Node& node); + explicit BitcoinCore(interfaces::Node& node); public Q_SLOTS: void initialize(); @@ -197,7 +194,7 @@ private: /// Pass fatal exception message to UI thread void handleRunawayException(const std::exception *e); - interface::Node& m_node; + interfaces::Node& m_node; }; /** Main Bitcoin application object */ @@ -205,7 +202,7 @@ class BitcoinApplication: public QApplication { Q_OBJECT public: - explicit BitcoinApplication(interface::Node& node, int &argc, char **argv); + explicit BitcoinApplication(interfaces::Node& node, int &argc, char **argv); ~BitcoinApplication(); #ifdef ENABLE_WALLET @@ -246,7 +243,7 @@ Q_SIGNALS: private: QThread *coreThread; - interface::Node& m_node; + interfaces::Node& m_node; OptionsModel *optionsModel; ClientModel *clientModel; BitcoinGUI *window; @@ -264,7 +261,7 @@ private: #include <qt/bitcoin.moc> -BitcoinCore::BitcoinCore(interface::Node& node) : +BitcoinCore::BitcoinCore(interfaces::Node& node) : QObject(), m_node(node) { } @@ -304,7 +301,7 @@ void BitcoinCore::shutdown() } } -BitcoinApplication::BitcoinApplication(interface::Node& node, int &argc, char **argv): +BitcoinApplication::BitcoinApplication(interfaces::Node& node, int &argc, char **argv): QApplication(argc, argv), coreThread(0), m_node(node), @@ -535,7 +532,7 @@ int main(int argc, char *argv[]) { SetupEnvironment(); - std::unique_ptr<interface::Node> node = interface::MakeNode(); + std::unique_ptr<interfaces::Node> node = interfaces::MakeNode(); /// 1. Parse command-line options. These take precedence over anything else. // Command-line options take precedence: @@ -660,11 +657,6 @@ int main(int argc, char *argv[]) // Start up the payment server early, too, so impatient users that click on // bitcoin: links repeatedly have their payment requests routed to this process: app.createPaymentServer(); - - // Hook up the wallet init interface - g_wallet_init_interface.reset(new WalletInit); -#else - g_wallet_init_interface.reset(new DummyWalletInit); #endif /// 9. Main GUI initialization @@ -687,7 +679,7 @@ int main(int argc, char *argv[]) app.createOptionsModel(gArgs.GetBoolArg("-resetguisettings", false)); // Subscribe to global signals from core - std::unique_ptr<interface::Handler> handler = node->handleInitMessage(InitMessage); + std::unique_ptr<interfaces::Handler> handler = node->handleInitMessage(InitMessage); if (gArgs.GetBoolArg("-splash", DEFAULT_SPLASHSCREEN) && !gArgs.GetBoolArg("-min", false)) app.createSplashScreen(networkStyle.data()); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 63a2a200b2..bfa8844a09 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -30,8 +30,8 @@ #include <chainparams.h> #include <init.h> -#include <interface/handler.h> -#include <interface/node.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> #include <ui_interface.h> #include <util.h> @@ -74,7 +74,7 @@ const std::string BitcoinGUI::DEFAULT_UIPLATFORM = #endif ; -BitcoinGUI::BitcoinGUI(interface::Node& node, const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) : +BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformStyle, const NetworkStyle *networkStyle, QWidget *parent) : QMainWindow(parent), enableWallet(false), m_node(node), diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 3a4b25d804..e59c71cd4f 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -33,7 +33,7 @@ class WalletModel; class HelpMessageDialog; class ModalOverlay; -namespace interface { +namespace interfaces { class Handler; class Node; } @@ -56,7 +56,7 @@ class BitcoinGUI : public QMainWindow public: static const std::string DEFAULT_UIPLATFORM; - explicit BitcoinGUI(interface::Node& node, const PlatformStyle *platformStyle, const NetworkStyle *networkStyle, QWidget *parent = 0); + explicit BitcoinGUI(interfaces::Node& node, const PlatformStyle *platformStyle, const NetworkStyle *networkStyle, QWidget *parent = 0); ~BitcoinGUI(); /** Set the client model. @@ -83,9 +83,9 @@ protected: bool eventFilter(QObject *object, QEvent *event); private: - interface::Node& m_node; - std::unique_ptr<interface::Handler> m_handler_message_box; - std::unique_ptr<interface::Handler> m_handler_question; + interfaces::Node& m_node; + std::unique_ptr<interfaces::Handler> m_handler_message_box; + std::unique_ptr<interfaces::Handler> m_handler_question; ClientModel *clientModel; WalletFrame *walletFrame; diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index 1dbfc815b6..37fd06ccc9 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -13,8 +13,8 @@ #include <chainparams.h> #include <checkpoints.h> #include <clientversion.h> -#include <interface/handler.h> -#include <interface/node.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> #include <validation.h> #include <net.h> #include <txmempool.h> @@ -32,7 +32,7 @@ class CBlockIndex; static int64_t nLastHeaderTipUpdateNotification = 0; static int64_t nLastBlockTipUpdateNotification = 0; -ClientModel::ClientModel(interface::Node& node, OptionsModel *_optionsModel, QObject *parent) : +ClientModel::ClientModel(interfaces::Node& node, OptionsModel *_optionsModel, QObject *parent) : QObject(parent), m_node(node), optionsModel(_optionsModel), diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index 9faa10b87e..a609222f7d 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -17,7 +17,7 @@ class PeerTableModel; class CBlockIndex; -namespace interface { +namespace interfaces { class Handler; class Node; } @@ -46,10 +46,10 @@ class ClientModel : public QObject Q_OBJECT public: - explicit ClientModel(interface::Node& node, OptionsModel *optionsModel, QObject *parent = 0); + explicit ClientModel(interfaces::Node& node, OptionsModel *optionsModel, QObject *parent = 0); ~ClientModel(); - interface::Node& node() const { return m_node; } + interfaces::Node& node() const { return m_node; } OptionsModel *getOptionsModel(); PeerTableModel *getPeerTableModel(); BanTableModel *getBanTableModel(); @@ -75,14 +75,14 @@ public: mutable std::atomic<int64_t> cachedBestHeaderTime; private: - interface::Node& m_node; - std::unique_ptr<interface::Handler> m_handler_show_progress; - std::unique_ptr<interface::Handler> m_handler_notify_num_connections_changed; - std::unique_ptr<interface::Handler> m_handler_notify_network_active_changed; - std::unique_ptr<interface::Handler> m_handler_notify_alert_changed; - std::unique_ptr<interface::Handler> m_handler_banned_list_changed; - std::unique_ptr<interface::Handler> m_handler_notify_block_tip; - std::unique_ptr<interface::Handler> m_handler_notify_header_tip; + interfaces::Node& m_node; + std::unique_ptr<interfaces::Handler> m_handler_show_progress; + std::unique_ptr<interfaces::Handler> m_handler_notify_num_connections_changed; + std::unique_ptr<interfaces::Handler> m_handler_notify_network_active_changed; + std::unique_ptr<interfaces::Handler> m_handler_notify_alert_changed; + std::unique_ptr<interfaces::Handler> m_handler_banned_list_changed; + std::unique_ptr<interfaces::Handler> m_handler_notify_block_tip; + std::unique_ptr<interfaces::Handler> m_handler_notify_header_tip; OptionsModel *optionsModel; PeerTableModel *peerTableModel; BanTableModel *banTableModel; diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 2081d6ca08..601a77fc85 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -14,7 +14,7 @@ #include <qt/walletmodel.h> #include <wallet/coincontrol.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <key_io.h> #include <policy/fees.h> #include <policy/policy.h> @@ -648,7 +648,7 @@ void CoinControlDialog::updateView() int nChildren = 0; for (const auto& outpair : coins.second) { const COutPoint& output = std::get<0>(outpair); - const interface::WalletTxOut& out = std::get<1>(outpair); + const interfaces::WalletTxOut& out = std::get<1>(outpair); nSum += out.txout.nValue; nChildren++; diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 3501f97908..c76fc4ca6d 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -13,7 +13,7 @@ #include <chainparams.h> #include <primitives/transaction.h> #include <key_io.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <policy/policy.h> #include <protocol.h> #include <script/script.h> @@ -232,7 +232,7 @@ QString formatBitcoinURI(const SendCoinsRecipient &info) return ret; } -bool isDust(interface::Node& node, const QString& address, const CAmount& amount) +bool isDust(interfaces::Node& node, const QString& address, const CAmount& amount) { CTxDestination dest = DecodeDestination(address.toStdString()); CScript script = GetScriptForDestination(dest); diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 40037edb9d..4a26964098 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -20,7 +20,7 @@ class QValidatedLineEdit; class SendCoinsRecipient; -namespace interface +namespace interfaces { class Node; } @@ -54,7 +54,7 @@ namespace GUIUtil QString formatBitcoinURI(const SendCoinsRecipient &info); // Returns true if given address+amount meets "dust" definition - bool isDust(interface::Node& node, const QString& address, const CAmount& amount); + bool isDust(interfaces::Node& node, const QString& address, const CAmount& amount); // HTML escaping for rich text controls QString HtmlEscape(const QString& str, bool fMultiLine=false); diff --git a/src/qt/intro.cpp b/src/qt/intro.cpp index 4eb7482018..8c00ca0363 100644 --- a/src/qt/intro.cpp +++ b/src/qt/intro.cpp @@ -12,7 +12,7 @@ #include <qt/guiutil.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <util.h> #include <QFileDialog> @@ -187,7 +187,7 @@ QString Intro::getDefaultDataDirectory() return GUIUtil::boostPathToQString(GetDefaultDataDir()); } -bool Intro::pickDataDirectory(interface::Node& node) +bool Intro::pickDataDirectory(interfaces::Node& node) { QSettings settings; /* If data directory provided on command line, no need to look at settings diff --git a/src/qt/intro.h b/src/qt/intro.h index 07d2025bb6..b0937aedcb 100644 --- a/src/qt/intro.h +++ b/src/qt/intro.h @@ -13,7 +13,7 @@ static const bool DEFAULT_CHOOSE_DATADIR = false; class FreespaceChecker; -namespace interface { +namespace interfaces { class Node; } @@ -45,7 +45,7 @@ public: * @note do NOT call global GetDataDir() before calling this function, this * will cause the wrong path to be cached. */ - static bool pickDataDirectory(interface::Node& node); + static bool pickDataDirectory(interfaces::Node& node); /** * Determine default data directory for operating system. diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 438e9e70f1..c0ddb89b40 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -13,7 +13,7 @@ #include <qt/guiutil.h> #include <qt/optionsmodel.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <validation.h> // for DEFAULT_SCRIPTCHECK_THREADS and MAX_SCRIPTCHECK_THREADS #include <netbase.h> #include <txdb.h> // for -dbcache defaults diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index d8197b6ec6..30c8124c58 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -11,7 +11,7 @@ #include <qt/bitcoinunits.h> #include <qt/guiutil.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <validation.h> // For DEFAULT_SCRIPTCHECK_THREADS #include <net.h> #include <netbase.h> @@ -24,7 +24,7 @@ const char *DEFAULT_GUI_PROXY_HOST = "127.0.0.1"; -OptionsModel::OptionsModel(interface::Node& node, QObject *parent, bool resetSettings) : +OptionsModel::OptionsModel(interfaces::Node& node, QObject *parent, bool resetSettings) : QAbstractListModel(parent), m_node(node) { Init(resetSettings); diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index 96c6b8fa45..fc1d119a71 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -9,7 +9,7 @@ #include <QAbstractListModel> -namespace interface { +namespace interfaces { class Node; } @@ -31,7 +31,7 @@ class OptionsModel : public QAbstractListModel Q_OBJECT public: - explicit OptionsModel(interface::Node& node, QObject *parent = 0, bool resetSettings = false); + explicit OptionsModel(interfaces::Node& node, QObject *parent = 0, bool resetSettings = false); enum OptionID { StartAtStartup, // bool @@ -79,10 +79,10 @@ public: void setRestartRequired(bool fRequired); bool isRestartRequired() const; - interface::Node& node() const { return m_node; } + interfaces::Node& node() const { return m_node; } private: - interface::Node& m_node; + interfaces::Node& m_node; /* Qt-only settings */ bool fHideTrayIcon; bool fMinimizeToTray; diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index 76d0220648..8e8788dad3 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -21,7 +21,7 @@ #define DECORATION_SIZE 54 #define NUM_ITEMS 5 -Q_DECLARE_METATYPE(interface::WalletBalances) +Q_DECLARE_METATYPE(interfaces::WalletBalances) class TxViewDelegate : public QAbstractItemDelegate { @@ -157,7 +157,7 @@ OverviewPage::~OverviewPage() delete ui; } -void OverviewPage::setBalance(const interface::WalletBalances& balances) +void OverviewPage::setBalance(const interfaces::WalletBalances& balances) { int unit = walletModel->getOptionsModel()->getDisplayUnit(); m_balances = balances; @@ -224,10 +224,10 @@ void OverviewPage::setWalletModel(WalletModel *model) ui->listTransactions->setModelColumn(TransactionTableModel::ToAddress); // Keep up to date with wallet - interface::Wallet& wallet = model->wallet(); - interface::WalletBalances balances = wallet.getBalances(); + interfaces::Wallet& wallet = model->wallet(); + interfaces::WalletBalances balances = wallet.getBalances(); setBalance(balances); - connect(model, SIGNAL(balanceChanged(interface::WalletBalances)), this, SLOT(setBalance(interface::WalletBalances))); + connect(model, SIGNAL(balanceChanged(interfaces::WalletBalances)), this, SLOT(setBalance(interfaces::WalletBalances))); connect(model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h index 36333536e5..d519eca43a 100644 --- a/src/qt/overviewpage.h +++ b/src/qt/overviewpage.h @@ -5,7 +5,7 @@ #ifndef BITCOIN_QT_OVERVIEWPAGE_H #define BITCOIN_QT_OVERVIEWPAGE_H -#include <interface/wallet.h> +#include <interfaces/wallet.h> #include <QWidget> #include <memory> @@ -38,7 +38,7 @@ public: void showOutOfSyncWarning(bool fShow); public Q_SLOTS: - void setBalance(const interface::WalletBalances& balances); + void setBalance(const interfaces::WalletBalances& balances); Q_SIGNALS: void transactionClicked(const QModelIndex &index); @@ -48,7 +48,7 @@ private: Ui::OverviewPage *ui; ClientModel *clientModel; WalletModel *walletModel; - interface::WalletBalances m_balances; + interfaces::WalletBalances m_balances; TxViewDelegate *txdelegate; std::unique_ptr<TransactionFilterProxy> filter; diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index 926a699754..70cdb3361c 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -9,7 +9,7 @@ #include <qt/optionsmodel.h> #include <chainparams.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <policy/policy.h> #include <key_io.h> #include <ui_interface.h> @@ -201,7 +201,7 @@ void PaymentServer::LoadRootCAs(X509_STORE* _store) // Warning: ipcSendCommandLine() is called early in init, // so don't use "Q_EMIT message()", but "QMessageBox::"! // -void PaymentServer::ipcParseCommandLine(interface::Node& node, int argc, char* argv[]) +void PaymentServer::ipcParseCommandLine(interfaces::Node& node, int argc, char* argv[]) { for (int i = 1; i < argc; i++) { @@ -760,7 +760,7 @@ void PaymentServer::handlePaymentACK(const QString& paymentACKMsg) Q_EMIT message(tr("Payment acknowledged"), paymentACKMsg, CClientUIInterface::ICON_INFORMATION | CClientUIInterface::MODAL); } -bool PaymentServer::verifyNetwork(interface::Node& node, const payments::PaymentDetails& requestDetails) +bool PaymentServer::verifyNetwork(interfaces::Node& node, const payments::PaymentDetails& requestDetails) { bool fVerified = requestDetails.network() == node.getNetwork(); if (!fVerified) { diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index e139899e22..511fc5bd6e 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -60,7 +60,7 @@ class PaymentServer : public QObject public: // Parse URIs on command line // Returns false on error - static void ipcParseCommandLine(interface::Node& node, int argc, char *argv[]); + static void ipcParseCommandLine(interfaces::Node& node, int argc, char *argv[]); // Returns true if there were URIs on the command line // which were successfully sent to an already-running @@ -87,7 +87,7 @@ public: void setOptionsModel(OptionsModel *optionsModel); // Verify that the payment request network matches the client network - static bool verifyNetwork(interface::Node& node, const payments::PaymentDetails& requestDetails); + static bool verifyNetwork(interfaces::Node& node, const payments::PaymentDetails& requestDetails); // Verify if the payment request is expired static bool verifyExpired(const payments::PaymentDetails& requestDetails); // Verify the payment request size is valid as per BIP70 diff --git a/src/qt/peertablemodel.cpp b/src/qt/peertablemodel.cpp index f33db8e761..7e318e3035 100644 --- a/src/qt/peertablemodel.cpp +++ b/src/qt/peertablemodel.cpp @@ -8,7 +8,7 @@ #include <qt/guiconstants.h> #include <qt/guiutil.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <validation.h> // for cs_main #include <sync.h> @@ -57,12 +57,12 @@ public: std::map<NodeId, int> mapNodeRows; /** Pull a full list of peers from vNodes into our cache */ - void refreshPeers(interface::Node& node) + void refreshPeers(interfaces::Node& node) { { cachedNodeStats.clear(); - interface::Node::NodesStats nodes_stats; + interfaces::Node::NodesStats nodes_stats; node.getNodesStats(nodes_stats); #if QT_VERSION >= 0x040700 cachedNodeStats.reserve(nodes_stats.size()); @@ -102,7 +102,7 @@ public: } }; -PeerTableModel::PeerTableModel(interface::Node& node, ClientModel *parent) : +PeerTableModel::PeerTableModel(interfaces::Node& node, ClientModel *parent) : QAbstractTableModel(parent), m_node(node), clientModel(parent), diff --git a/src/qt/peertablemodel.h b/src/qt/peertablemodel.h index c53462c57c..69c9744c8f 100644 --- a/src/qt/peertablemodel.h +++ b/src/qt/peertablemodel.h @@ -16,7 +16,7 @@ class ClientModel; class PeerTablePriv; -namespace interface { +namespace interfaces { class Node; } @@ -51,7 +51,7 @@ class PeerTableModel : public QAbstractTableModel Q_OBJECT public: - explicit PeerTableModel(interface::Node& node, ClientModel *parent = 0); + explicit PeerTableModel(interfaces::Node& node, ClientModel *parent = 0); ~PeerTableModel(); const CNodeCombinedStats *getNodeStats(int idx); int getRowByNodeId(NodeId nodeid); @@ -82,7 +82,7 @@ public Q_SLOTS: void refresh(); private: - interface::Node& m_node; + interfaces::Node& m_node; ClientModel *clientModel; QStringList columns; std::unique_ptr<PeerTablePriv> priv; diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 745055b944..5122bab36f 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -14,7 +14,7 @@ #include <qt/platformstyle.h> #include <qt/walletmodel.h> #include <chainparams.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <netbase.h> #include <rpc/server.h> #include <rpc/client.h> @@ -85,7 +85,7 @@ class RPCExecutor : public QObject { Q_OBJECT public: - RPCExecutor(interface::Node& node) : m_node(node) {} + RPCExecutor(interfaces::Node& node) : m_node(node) {} public Q_SLOTS: void request(const QString &command, const QString &walletID); @@ -94,7 +94,7 @@ Q_SIGNALS: void reply(int category, const QString &command); private: - interface::Node& m_node; + interfaces::Node& m_node; }; /** Class for handling RPC timers @@ -153,7 +153,7 @@ public: * @param[out] pstrFilteredOut Command line, filtered to remove any sensitive data */ -bool RPCConsole::RPCParseCommandLine(interface::Node* node, std::string &strResult, const std::string &strCommand, const bool fExecute, std::string * const pstrFilteredOut, const std::string *walletID) +bool RPCConsole::RPCParseCommandLine(interfaces::Node* node, std::string &strResult, const std::string &strCommand, const bool fExecute, std::string * const pstrFilteredOut, const std::string *walletID) { std::vector< std::vector<std::string> > stack; stack.push_back(std::vector<std::string>()); @@ -451,7 +451,7 @@ void RPCExecutor::request(const QString &command, const QString &walletID) } } -RPCConsole::RPCConsole(interface::Node& node, const PlatformStyle *_platformStyle, QWidget *parent) : +RPCConsole::RPCConsole(interfaces::Node& node, const PlatformStyle *_platformStyle, QWidget *parent) : QWidget(parent), m_node(node), ui(new Ui::RPCConsole), @@ -575,7 +575,7 @@ void RPCConsole::setClientModel(ClientModel *model) setNumConnections(model->getNumConnections()); connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int))); - interface::Node& node = clientModel->node(); + interfaces::Node& node = clientModel->node(); setNumBlocks(node.getNumBlocks(), QDateTime::fromTime_t(node.getLastBlockTime()), node.getVerificationProgress(), false); connect(model, SIGNAL(numBlocksChanged(int,QDateTime,double,bool)), this, SLOT(setNumBlocks(int,QDateTime,double,bool))); diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 8381301759..a9a60d09f1 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -19,7 +19,7 @@ class PlatformStyle; class RPCTimerInterface; class WalletModel; -namespace interface { +namespace interfaces { class Node; } @@ -38,11 +38,11 @@ class RPCConsole: public QWidget Q_OBJECT public: - explicit RPCConsole(interface::Node& node, const PlatformStyle *platformStyle, QWidget *parent); + explicit RPCConsole(interfaces::Node& node, const PlatformStyle *platformStyle, QWidget *parent); ~RPCConsole(); - static bool RPCParseCommandLine(interface::Node* node, std::string &strResult, const std::string &strCommand, bool fExecute, std::string * const pstrFilteredOut = nullptr, const std::string *walletID = nullptr); - static bool RPCExecuteCommandLine(interface::Node& node, std::string &strResult, const std::string &strCommand, std::string * const pstrFilteredOut = nullptr, const std::string *walletID = nullptr) { + static bool RPCParseCommandLine(interfaces::Node* node, std::string &strResult, const std::string &strCommand, bool fExecute, std::string * const pstrFilteredOut = nullptr, const std::string *walletID = nullptr); + static bool RPCExecuteCommandLine(interfaces::Node& node, std::string &strResult, const std::string &strCommand, std::string * const pstrFilteredOut = nullptr, const std::string *walletID = nullptr) { return RPCParseCommandLine(&node, strResult, strCommand, true, pstrFilteredOut, walletID); } @@ -144,7 +144,7 @@ private: }; - interface::Node& m_node; + interfaces::Node& m_node; Ui::RPCConsole *ui; ClientModel *clientModel; QStringList history; diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index b4c1471a4f..0874a0ada4 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -15,7 +15,7 @@ #include <qt/sendcoinsentry.h> #include <chainparams.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <key_io.h> #include <wallet/coincontrol.h> #include <ui_interface.h> @@ -149,9 +149,9 @@ void SendCoinsDialog::setModel(WalletModel *_model) } } - interface::WalletBalances balances = _model->wallet().getBalances(); + interfaces::WalletBalances balances = _model->wallet().getBalances(); setBalance(balances); - connect(_model, SIGNAL(balanceChanged(interface::WalletBalances)), this, SLOT(setBalance(interface::WalletBalances))); + connect(_model, SIGNAL(balanceChanged(interfaces::WalletBalances)), this, SLOT(setBalance(interfaces::WalletBalances))); connect(_model->getOptionsModel(), SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); updateDisplayUnit(); @@ -515,7 +515,7 @@ bool SendCoinsDialog::handlePaymentRequest(const SendCoinsRecipient &rv) return true; } -void SendCoinsDialog::setBalance(const interface::WalletBalances& balances) +void SendCoinsDialog::setBalance(const interfaces::WalletBalances& balances) { if(model && model->getOptionsModel()) { diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index 43757e3186..40a1d10c2b 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -51,7 +51,7 @@ public Q_SLOTS: void accept(); SendCoinsEntry *addEntry(); void updateTabsAndLabels(); - void setBalance(const interface::WalletBalances& balances); + void setBalance(const interfaces::WalletBalances& balances); Q_SIGNALS: void coinsSent(const uint256& txid); diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index 6a961d83ea..977425f7e3 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -127,7 +127,7 @@ void SendCoinsEntry::useAvailableBalanceClicked() Q_EMIT useAvailableBalance(this); } -bool SendCoinsEntry::validate(interface::Node& node) +bool SendCoinsEntry::validate(interfaces::Node& node) { if (!model) return false; diff --git a/src/qt/sendcoinsentry.h b/src/qt/sendcoinsentry.h index 715f4cfde5..76f96c61e0 100644 --- a/src/qt/sendcoinsentry.h +++ b/src/qt/sendcoinsentry.h @@ -30,7 +30,7 @@ public: ~SendCoinsEntry(); void setModel(WalletModel *model); - bool validate(interface::Node& node); + bool validate(interfaces::Node& node); SendCoinsRecipient getValue(); /** Return whether the entry is still empty and unedited */ diff --git a/src/qt/splashscreen.cpp b/src/qt/splashscreen.cpp index 2475a82ef9..4d972b431c 100644 --- a/src/qt/splashscreen.cpp +++ b/src/qt/splashscreen.cpp @@ -12,9 +12,9 @@ #include <clientversion.h> #include <init.h> -#include <interface/handler.h> -#include <interface/node.h> -#include <interface/wallet.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> +#include <interfaces/wallet.h> #include <util.h> #include <ui_interface.h> #include <version.h> @@ -25,7 +25,7 @@ #include <QPainter> #include <QRadialGradient> -SplashScreen::SplashScreen(interface::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle) : +SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle) : QWidget(0, f), curAlignment(0), m_node(node) { // set reference point, paddings @@ -177,7 +177,7 @@ static void ShowProgress(SplashScreen *splash, const std::string &title, int nPr strprintf("\n%d", nProgress) + "%"); } #ifdef ENABLE_WALLET -void SplashScreen::ConnectWallet(std::unique_ptr<interface::Wallet> wallet) +void SplashScreen::ConnectWallet(std::unique_ptr<interfaces::Wallet> wallet) { m_connected_wallet_handlers.emplace_back(wallet->handleShowProgress(boost::bind(ShowProgress, this, _1, _2, false))); m_connected_wallets.emplace_back(std::move(wallet)); @@ -190,7 +190,7 @@ void SplashScreen::subscribeToCoreSignals() m_handler_init_message = m_node.handleInitMessage(boost::bind(InitMessage, this, _1)); m_handler_show_progress = m_node.handleShowProgress(boost::bind(ShowProgress, this, _1, _2, _3)); #ifdef ENABLE_WALLET - m_handler_load_wallet = m_node.handleLoadWallet([this](std::unique_ptr<interface::Wallet> wallet) { ConnectWallet(std::move(wallet)); }); + m_handler_load_wallet = m_node.handleLoadWallet([this](std::unique_ptr<interfaces::Wallet> wallet) { ConnectWallet(std::move(wallet)); }); #endif } diff --git a/src/qt/splashscreen.h b/src/qt/splashscreen.h index 419f36f641..9ef19675d8 100644 --- a/src/qt/splashscreen.h +++ b/src/qt/splashscreen.h @@ -12,7 +12,7 @@ class NetworkStyle; -namespace interface { +namespace interfaces { class Handler; class Node; class Wallet; @@ -29,7 +29,7 @@ class SplashScreen : public QWidget Q_OBJECT public: - explicit SplashScreen(interface::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle); + explicit SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle); ~SplashScreen(); protected: @@ -52,19 +52,19 @@ private: /** Disconnect core signals to splash screen */ void unsubscribeFromCoreSignals(); /** Connect wallet signals to splash screen */ - void ConnectWallet(std::unique_ptr<interface::Wallet> wallet); + void ConnectWallet(std::unique_ptr<interfaces::Wallet> wallet); QPixmap pixmap; QString curMessage; QColor curColor; int curAlignment; - interface::Node& m_node; - std::unique_ptr<interface::Handler> m_handler_init_message; - std::unique_ptr<interface::Handler> m_handler_show_progress; - std::unique_ptr<interface::Handler> m_handler_load_wallet; - std::list<std::unique_ptr<interface::Wallet>> m_connected_wallets; - std::list<std::unique_ptr<interface::Handler>> m_connected_wallet_handlers; + interfaces::Node& m_node; + std::unique_ptr<interfaces::Handler> m_handler_init_message; + std::unique_ptr<interfaces::Handler> m_handler_show_progress; + std::unique_ptr<interfaces::Handler> m_handler_load_wallet; + std::list<std::unique_ptr<interfaces::Wallet>> m_connected_wallets; + std::list<std::unique_ptr<interfaces::Handler>> m_connected_wallet_handlers; }; #endif // BITCOIN_QT_SPLASHSCREEN_H diff --git a/src/qt/test/paymentservertests.cpp b/src/qt/test/paymentservertests.cpp index 46e9d4d0a4..83484b5ce7 100644 --- a/src/qt/test/paymentservertests.cpp +++ b/src/qt/test/paymentservertests.cpp @@ -9,7 +9,7 @@ #include <amount.h> #include <chainparams.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <random.h> #include <script/script.h> #include <script/standard.h> @@ -67,7 +67,7 @@ static SendCoinsRecipient handleRequest(PaymentServer* server, std::vector<unsig void PaymentServerTests::paymentServerTests() { SelectParams(CBaseChainParams::MAIN); - auto node = interface::MakeNode(); + auto node = interfaces::MakeNode(); OptionsModel optionsModel(*node); PaymentServer* server = new PaymentServer(nullptr, false); X509_STORE* caStore = X509_STORE_new(); diff --git a/src/qt/test/rpcnestedtests.cpp b/src/qt/test/rpcnestedtests.cpp index 467107dc4c..974e7831c4 100644 --- a/src/qt/test/rpcnestedtests.cpp +++ b/src/qt/test/rpcnestedtests.cpp @@ -7,7 +7,7 @@ #include <chainparams.h> #include <consensus/validation.h> #include <fs.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <validation.h> #include <rpc/register.h> #include <rpc/server.h> @@ -46,7 +46,7 @@ void RPCNestedTests::rpcNestedTests() std::string result; std::string result2; std::string filtered; - auto node = interface::MakeNode(); + auto node = interfaces::MakeNode(); RPCConsole::RPCExecuteCommandLine(*node, result, "getblockchaininfo()[chain]", &filtered); //simple result filtering with path QVERIFY(result=="main"); QVERIFY(filtered == "getblockchaininfo()[chain]"); diff --git a/src/qt/test/wallettests.cpp b/src/qt/test/wallettests.cpp index b60c5b979f..fb86cf5ec9 100644 --- a/src/qt/test/wallettests.cpp +++ b/src/qt/test/wallettests.cpp @@ -1,6 +1,6 @@ #include <qt/test/wallettests.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <qt/bitcoinamountfield.h> #include <qt/callback.h> #include <qt/optionsmodel.h> @@ -178,7 +178,7 @@ void TestGUI() std::unique_ptr<const PlatformStyle> platformStyle(PlatformStyle::instantiate("other")); SendCoinsDialog sendCoinsDialog(platformStyle.get()); TransactionView transactionView(platformStyle.get()); - auto node = interface::MakeNode(); + auto node = interfaces::MakeNode(); OptionsModel optionsModel(*node); vpwallets.insert(vpwallets.begin(), &wallet); WalletModel walletModel(std::move(node->getWallets()[0]), *node, platformStyle.get(), &optionsModel); diff --git a/src/qt/trafficgraphwidget.cpp b/src/qt/trafficgraphwidget.cpp index ff378ed1bf..5a3b645f65 100644 --- a/src/qt/trafficgraphwidget.cpp +++ b/src/qt/trafficgraphwidget.cpp @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include <interface/node.h> +#include <interfaces/node.h> #include <qt/trafficgraphwidget.h> #include <qt/clientmodel.h> diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 409835592f..f316c3ca45 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -10,7 +10,7 @@ #include <qt/transactionrecord.h> #include <consensus/consensus.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <key_io.h> #include <validation.h> #include <script/script.h> @@ -23,7 +23,7 @@ #include <stdint.h> #include <string> -QString TransactionDesc::FormatTxStatus(const interface::WalletTx& wtx, const interface::WalletTxStatus& status, bool inMempool, int numBlocks, int64_t adjustedTime) +QString TransactionDesc::FormatTxStatus(const interfaces::WalletTx& wtx, const interfaces::WalletTxStatus& status, bool inMempool, int numBlocks, int64_t adjustedTime) { if (!status.is_final) { @@ -48,14 +48,14 @@ QString TransactionDesc::FormatTxStatus(const interface::WalletTx& wtx, const in } } -QString TransactionDesc::toHTML(interface::Node& node, interface::Wallet& wallet, TransactionRecord *rec, int unit) +QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wallet, TransactionRecord *rec, int unit) { int numBlocks; int64_t adjustedTime; - interface::WalletTxStatus status; - interface::WalletOrderForm orderForm; + interfaces::WalletTxStatus status; + interfaces::WalletOrderForm orderForm; bool inMempool; - interface::WalletTx wtx = wallet.getWalletTxDetails(rec->hash, status, orderForm, inMempool, numBlocks, adjustedTime); + interfaces::WalletTx wtx = wallet.getWalletTxDetails(rec->hash, status, orderForm, inMempool, numBlocks, adjustedTime); QString strHTML; diff --git a/src/qt/transactiondesc.h b/src/qt/transactiondesc.h index ea9ab28ee3..cb8453cb81 100644 --- a/src/qt/transactiondesc.h +++ b/src/qt/transactiondesc.h @@ -10,7 +10,7 @@ class TransactionRecord; -namespace interface { +namespace interfaces { class Node; class Wallet; struct WalletTx; @@ -24,12 +24,12 @@ class TransactionDesc: public QObject Q_OBJECT public: - static QString toHTML(interface::Node& node, interface::Wallet& wallet, TransactionRecord *rec, int unit); + static QString toHTML(interfaces::Node& node, interfaces::Wallet& wallet, TransactionRecord *rec, int unit); private: TransactionDesc() {} - static QString FormatTxStatus(const interface::WalletTx& wtx, const interface::WalletTxStatus& status, bool inMempool, int numBlocks, int64_t adjustedTime); + static QString FormatTxStatus(const interfaces::WalletTx& wtx, const interfaces::WalletTxStatus& status, bool inMempool, int numBlocks, int64_t adjustedTime); }; #endif // BITCOIN_QT_TRANSACTIONDESC_H diff --git a/src/qt/transactionrecord.cpp b/src/qt/transactionrecord.cpp index 60ab2d57d7..b6ed66ad96 100644 --- a/src/qt/transactionrecord.cpp +++ b/src/qt/transactionrecord.cpp @@ -5,7 +5,7 @@ #include <qt/transactionrecord.h> #include <consensus/consensus.h> -#include <interface/wallet.h> +#include <interfaces/wallet.h> #include <key_io.h> #include <timedata.h> #include <validation.h> @@ -25,7 +25,7 @@ bool TransactionRecord::showTransaction() /* * Decompose CWallet transaction to model transaction records. */ -QList<TransactionRecord> TransactionRecord::decomposeTransaction(const interface::WalletTx& wtx) +QList<TransactionRecord> TransactionRecord::decomposeTransaction(const interfaces::WalletTx& wtx) { QList<TransactionRecord> parts; int64_t nTime = wtx.time; @@ -158,7 +158,7 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const interface return parts; } -void TransactionRecord::updateStatus(const interface::WalletTxStatus& wtx, int numBlocks, int64_t adjustedTime) +void TransactionRecord::updateStatus(const interfaces::WalletTxStatus& wtx, int numBlocks, int64_t adjustedTime) { // Determine transaction status diff --git a/src/qt/transactionrecord.h b/src/qt/transactionrecord.h index c653584b52..62961434ed 100644 --- a/src/qt/transactionrecord.h +++ b/src/qt/transactionrecord.h @@ -11,7 +11,7 @@ #include <QList> #include <QString> -namespace interface { +namespace interfaces { class Node; class Wallet; struct WalletTx; @@ -111,7 +111,7 @@ public: /** Decompose CWallet transaction to model transaction records. */ static bool showTransaction(); - static QList<TransactionRecord> decomposeTransaction(const interface::WalletTx& wtx); + static QList<TransactionRecord> decomposeTransaction(const interfaces::WalletTx& wtx); /** @name Immutable transaction attributes @{*/ @@ -140,7 +140,7 @@ public: /** Update status from core wallet tx. */ - void updateStatus(const interface::WalletTxStatus& wtx, int numBlocks, int64_t adjustedTime); + void updateStatus(const interfaces::WalletTxStatus& wtx, int numBlocks, int64_t adjustedTime); /** Return whether a status update is needed. */ diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index 2148ff1728..46169a91d1 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -14,8 +14,8 @@ #include <qt/walletmodel.h> #include <core_io.h> -#include <interface/handler.h> -#include <interface/node.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> #include <validation.h> #include <sync.h> #include <uint256.h> @@ -73,7 +73,7 @@ public: /* Query entire wallet anew from core. */ - void refreshWallet(interface::Wallet& wallet) + void refreshWallet(interfaces::Wallet& wallet) { qDebug() << "TransactionTablePriv::refreshWallet"; cachedWallet.clear(); @@ -91,7 +91,7 @@ public: Call with transaction that was added, removed or changed. */ - void updateWallet(interface::Wallet& wallet, const uint256 &hash, int status, bool showTransaction) + void updateWallet(interfaces::Wallet& wallet, const uint256 &hash, int status, bool showTransaction) { qDebug() << "TransactionTablePriv::updateWallet: " + QString::fromStdString(hash.ToString()) + " " + QString::number(status); @@ -127,7 +127,7 @@ public: if(showTransaction) { // Find transaction in wallet - interface::WalletTx wtx = wallet.getWalletTx(hash); + interfaces::WalletTx wtx = wallet.getWalletTx(hash); if(!wtx.tx) { qWarning() << "TransactionTablePriv::updateWallet: Warning: Got CT_NEW, but transaction is not in wallet"; @@ -176,7 +176,7 @@ public: return cachedWallet.size(); } - TransactionRecord *index(interface::Wallet& wallet, int idx) + TransactionRecord *index(interfaces::Wallet& wallet, int idx) { if(idx >= 0 && idx < cachedWallet.size()) { @@ -189,7 +189,7 @@ public: // If a status update is needed (blocks came in since last check), // update the status of this transaction from the wallet. Otherwise, // simply re-use the cached status. - interface::WalletTxStatus wtx; + interfaces::WalletTxStatus wtx; int numBlocks; int64_t adjustedTime; if (wallet.tryGetTxStatus(rec->hash, wtx, numBlocks, adjustedTime) && rec->statusUpdateNeeded(numBlocks)) { @@ -200,12 +200,12 @@ public: return 0; } - QString describe(interface::Node& node, interface::Wallet& wallet, TransactionRecord *rec, int unit) + QString describe(interfaces::Node& node, interfaces::Wallet& wallet, TransactionRecord *rec, int unit) { return TransactionDesc::toHTML(node, wallet, rec, unit); } - QString getTxHex(interface::Wallet& wallet, TransactionRecord *rec) + QString getTxHex(interfaces::Wallet& wallet, TransactionRecord *rec) { auto tx = wallet.getTx(rec->hash); if (tx) { diff --git a/src/qt/transactiontablemodel.h b/src/qt/transactiontablemodel.h index 57566db638..8b029be5f5 100644 --- a/src/qt/transactiontablemodel.h +++ b/src/qt/transactiontablemodel.h @@ -12,7 +12,7 @@ #include <memory> -namespace interface { +namespace interfaces { class Handler; } @@ -85,8 +85,8 @@ public: private: WalletModel *walletModel; - std::unique_ptr<interface::Handler> m_handler_transaction_changed; - std::unique_ptr<interface::Handler> m_handler_show_progress; + std::unique_ptr<interfaces::Handler> m_handler_transaction_changed; + std::unique_ptr<interfaces::Handler> m_handler_show_progress; QStringList columns; TransactionTablePriv *priv; bool fProcessingQueuedTransactions; diff --git a/src/qt/utilitydialog.cpp b/src/qt/utilitydialog.cpp index 6114ea0de1..d5b98486ae 100644 --- a/src/qt/utilitydialog.cpp +++ b/src/qt/utilitydialog.cpp @@ -19,7 +19,7 @@ #include <clientversion.h> #include <init.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <util.h> #include <stdio.h> @@ -32,7 +32,7 @@ #include <QVBoxLayout> /** "Help message" or "About" dialog box */ -HelpMessageDialog::HelpMessageDialog(interface::Node& node, QWidget *parent, bool about) : +HelpMessageDialog::HelpMessageDialog(interfaces::Node& node, QWidget *parent, bool about) : QDialog(parent), ui(new Ui::HelpMessageDialog) { diff --git a/src/qt/utilitydialog.h b/src/qt/utilitydialog.h index e6ad7be5d0..f5c8af4362 100644 --- a/src/qt/utilitydialog.h +++ b/src/qt/utilitydialog.h @@ -10,7 +10,7 @@ class BitcoinGUI; -namespace interface { +namespace interfaces { class Node; } @@ -24,7 +24,7 @@ class HelpMessageDialog : public QDialog Q_OBJECT public: - explicit HelpMessageDialog(interface::Node& node, QWidget *parent, bool about); + explicit HelpMessageDialog(interfaces::Node& node, QWidget *parent, bool about); ~HelpMessageDialog(); void printToConsole(); diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index d9db437dc5..00b98901c0 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -12,8 +12,8 @@ #include <qt/sendcoinsdialog.h> #include <qt/transactiontablemodel.h> -#include <interface/handler.h> -#include <interface/node.h> +#include <interfaces/handler.h> +#include <interfaces/node.h> #include <key_io.h> #include <ui_interface.h> #include <util.h> // for GetBoolArg @@ -28,7 +28,7 @@ #include <QTimer> -WalletModel::WalletModel(std::unique_ptr<interface::Wallet> wallet, interface::Node& node, const PlatformStyle *platformStyle, OptionsModel *_optionsModel, QObject *parent) : +WalletModel::WalletModel(std::unique_ptr<interfaces::Wallet> wallet, interfaces::Node& node, const PlatformStyle *platformStyle, OptionsModel *_optionsModel, QObject *parent) : QObject(parent), m_wallet(std::move(wallet)), m_node(node), optionsModel(_optionsModel), addressTableModel(0), transactionTableModel(0), recentRequestsTableModel(0), @@ -70,7 +70,7 @@ void WalletModel::pollBalanceChanged() // avoids the GUI from getting stuck on periodical polls if the core is // holding the locks for a longer time - for example, during a wallet // rescan. - interface::WalletBalances new_balances; + interfaces::WalletBalances new_balances; int numBlocks = -1; if (!m_wallet->tryGetBalances(new_balances, numBlocks)) { return; @@ -89,7 +89,7 @@ void WalletModel::pollBalanceChanged() } } -void WalletModel::checkBalanceChanged(const interface::WalletBalances& new_balances) +void WalletModel::checkBalanceChanged(const interfaces::WalletBalances& new_balances) { if(new_balances.balanceChanged(m_cached_balances)) { m_cached_balances = new_balances; diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index bc409b10ee..e5ed5b4e82 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -13,7 +13,7 @@ #include <qt/paymentrequestplus.h> #include <qt/walletmodeltransaction.h> -#include <interface/wallet.h> +#include <interfaces/wallet.h> #include <support/allocators/secure.h> #include <map> @@ -37,9 +37,9 @@ class COutput; class CPubKey; class uint256; -namespace interface { +namespace interfaces { class Node; -} // namespace interface +} // namespace interfaces QT_BEGIN_NAMESPACE class QTimer; @@ -111,7 +111,7 @@ class WalletModel : public QObject Q_OBJECT public: - explicit WalletModel(std::unique_ptr<interface::Wallet> wallet, interface::Node& node, const PlatformStyle *platformStyle, OptionsModel *optionsModel, QObject *parent = 0); + explicit WalletModel(std::unique_ptr<interfaces::Wallet> wallet, interfaces::Node& node, const PlatformStyle *platformStyle, OptionsModel *optionsModel, QObject *parent = 0); ~WalletModel(); enum StatusCode // Returned by sendCoins @@ -198,20 +198,20 @@ public: static bool isWalletEnabled(); - interface::Node& node() const { return m_node; } - interface::Wallet& wallet() const { return *m_wallet; } + interfaces::Node& node() const { return m_node; } + interfaces::Wallet& wallet() const { return *m_wallet; } QString getWalletName() const; bool isMultiwallet(); private: - std::unique_ptr<interface::Wallet> m_wallet; - std::unique_ptr<interface::Handler> m_handler_status_changed; - std::unique_ptr<interface::Handler> m_handler_address_book_changed; - std::unique_ptr<interface::Handler> m_handler_transaction_changed; - std::unique_ptr<interface::Handler> m_handler_show_progress; - std::unique_ptr<interface::Handler> m_handler_watch_only_changed; - interface::Node& m_node; + std::unique_ptr<interfaces::Wallet> m_wallet; + std::unique_ptr<interfaces::Handler> m_handler_status_changed; + std::unique_ptr<interfaces::Handler> m_handler_address_book_changed; + std::unique_ptr<interfaces::Handler> m_handler_transaction_changed; + std::unique_ptr<interfaces::Handler> m_handler_show_progress; + std::unique_ptr<interfaces::Handler> m_handler_watch_only_changed; + interfaces::Node& m_node; bool fHaveWatchOnly; bool fForceCheckBalanceChanged; @@ -225,7 +225,7 @@ private: RecentRequestsTableModel *recentRequestsTableModel; // Cache some values to be able to detect changes - interface::WalletBalances m_cached_balances; + interfaces::WalletBalances m_cached_balances; EncryptionStatus cachedEncryptionStatus; int cachedNumBlocks; @@ -233,11 +233,11 @@ private: void subscribeToCoreSignals(); void unsubscribeFromCoreSignals(); - void checkBalanceChanged(const interface::WalletBalances& new_balances); + void checkBalanceChanged(const interfaces::WalletBalances& new_balances); Q_SIGNALS: // Signal that balance in wallet changed - void balanceChanged(const interface::WalletBalances& balances); + void balanceChanged(const interfaces::WalletBalances& balances); // Encryption status of wallet changed void encryptionStatusChanged(); diff --git a/src/qt/walletmodeltransaction.cpp b/src/qt/walletmodeltransaction.cpp index 21bdfe3818..d5187d6634 100644 --- a/src/qt/walletmodeltransaction.cpp +++ b/src/qt/walletmodeltransaction.cpp @@ -4,7 +4,7 @@ #include <qt/walletmodeltransaction.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <policy/policy.h> WalletModelTransaction::WalletModelTransaction(const QList<SendCoinsRecipient> &_recipients) : @@ -18,7 +18,7 @@ QList<SendCoinsRecipient> WalletModelTransaction::getRecipients() const return recipients; } -std::unique_ptr<interface::PendingWalletTx>& WalletModelTransaction::getWtx() +std::unique_ptr<interfaces::PendingWalletTx>& WalletModelTransaction::getWtx() { return wtx; } diff --git a/src/qt/walletmodeltransaction.h b/src/qt/walletmodeltransaction.h index 32fd0d2110..9f91326109 100644 --- a/src/qt/walletmodeltransaction.h +++ b/src/qt/walletmodeltransaction.h @@ -13,7 +13,7 @@ class SendCoinsRecipient; -namespace interface { +namespace interfaces { class Node; class PendingWalletTx; } @@ -26,7 +26,7 @@ public: QList<SendCoinsRecipient> getRecipients() const; - std::unique_ptr<interface::PendingWalletTx>& getWtx(); + std::unique_ptr<interfaces::PendingWalletTx>& getWtx(); unsigned int getTransactionSize(); void setTransactionFee(const CAmount& newFee); @@ -38,7 +38,7 @@ public: private: QList<SendCoinsRecipient> recipients; - std::unique_ptr<interface::PendingWalletTx> wtx; + std::unique_ptr<interfaces::PendingWalletTx> wtx; CAmount fee; }; diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp index 1505557244..8b9b85c8c9 100644 --- a/src/qt/walletview.cpp +++ b/src/qt/walletview.cpp @@ -19,7 +19,7 @@ #include <qt/transactionview.h> #include <qt/walletmodel.h> -#include <interface/node.h> +#include <interfaces/node.h> #include <ui_interface.h> #include <QAction> diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 9d7aa58894..f0493de3bd 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -1198,7 +1198,7 @@ UniValue testmempoolaccept(const JSONRPCRequest& request) { LOCK(cs_main); test_accept_res = AcceptToMemoryPool(mempool, state, std::move(tx), &missing_inputs, - nullptr /* plTxnReplaced */, false /* bypass_limits */, max_raw_tx_fee, /* test_accpet */ true); + nullptr /* plTxnReplaced */, false /* bypass_limits */, max_raw_tx_fee, /* test_accept */ true); } result_0.pushKV("allowed", test_accept_res); if (!test_accept_res) { diff --git a/src/util.cpp b/src/util.cpp index 46054f5025..8b36c3e5f7 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -31,6 +31,7 @@ #include <algorithm> #include <fcntl.h> +#include <sched.h> #include <sys/resource.h> #include <sys/stat.h> @@ -1039,3 +1040,17 @@ fs::path AbsPathForConfigVal(const fs::path& path, bool net_specific) { return fs::absolute(path, GetDataDir(net_specific)); } + +int ScheduleBatchPriority(void) +{ +#ifdef SCHED_BATCH + const static sched_param param{.sched_priority = 0}; + if (int ret = pthread_setschedparam(0, SCHED_BATCH, ¶m)) { + LogPrintf("Failed to pthread_setschedparam: %s\n", strerror(errno)); + return ret; + } + return 0; +#else + return 1; +#endif +} diff --git a/src/util.h b/src/util.h index 7114c0accd..f625a61d8b 100644 --- a/src/util.h +++ b/src/util.h @@ -381,4 +381,13 @@ std::unique_ptr<T> MakeUnique(Args&&... args) return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); } +/** + * On platforms that support it, tell the kernel the calling thread is + * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. + * + * @return The return value of sched_setschedule(), or 1 on systems without + * sched_setchedule(). + */ +int ScheduleBatchPriority(void); + #endif // BITCOIN_UTIL_H diff --git a/src/validation.cpp b/src/validation.cpp index df8729e382..e881b45bd2 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -507,7 +507,7 @@ void UpdateMempoolForReorg(DisconnectedBlockTransactions &disconnectpool, bool f // Used to avoid mempool polluting consensus critical paths if CCoinsViewMempool // were somehow broken and returning the wrong scriptPubKeys -static bool CheckInputsFromMempoolAndCache(const CTransaction& tx, CValidationState &state, const CCoinsViewCache &view, CTxMemPool& pool, +static bool CheckInputsFromMempoolAndCache(const CTransaction& tx, CValidationState& state, const CCoinsViewCache& view, const CTxMemPool& pool, unsigned int flags, bool cacheSigStore, PrecomputedTransactionData& txdata) { AssertLockHeld(cs_main); @@ -917,8 +917,7 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool // invalid blocks (using TestBlockValidity), however allowing such // transactions into the mempool can be exploited as a DoS attack. unsigned int currentBlockScriptVerifyFlags = GetBlockScriptFlags(chainActive.Tip(), Params().GetConsensus()); - if (!CheckInputsFromMempoolAndCache(tx, state, view, pool, currentBlockScriptVerifyFlags, true, txdata)) - { + if (!CheckInputsFromMempoolAndCache(tx, state, view, pool, currentBlockScriptVerifyFlags, true, txdata)) { // If we're using promiscuousmempoolflags, we may hit this normally // Check if current block has some flags that scriptVerifyFlags // does not before printing an ominous warning diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp index 3d7bb674f0..c860eede05 100644 --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -3,17 +3,53 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include <wallet/init.h> - #include <chainparams.h> +#include <init.h> #include <net.h> #include <util.h> #include <utilmoneystr.h> #include <validation.h> +#include <walletinitinterface.h> #include <wallet/rpcwallet.h> #include <wallet/wallet.h> #include <wallet/walletutil.h> +class WalletInit : public WalletInitInterface { +public: + + //! Return the wallets help message. + std::string GetHelpString(bool showDebug) override; + + //! Wallets parameter interaction + bool ParameterInteraction() override; + + //! Register wallet RPCs. + void RegisterRPC(CRPCTable &tableRPC) override; + + //! Responsible for reading and validating the -wallet arguments and verifying the wallet database. + // This function will perform salvage on the wallet if requested, as long as only one wallet is + // being loaded (WalletParameterInteraction forbids -salvagewallet, -zapwallettxes or -upgradewallet with multiwallet). + bool Verify() override; + + //! Load wallet databases. + bool Open() override; + + //! Complete startup of wallets. + void Start(CScheduler& scheduler) override; + + //! Flush all wallets in preparation for shutdown. + void Flush() override; + + //! Stop all wallets. Wallets will be flushed first. + void Stop() override; + + //! Close all wallets. + void Close() override; +}; + +static WalletInit g_wallet_init; +WalletInitInterface* const g_wallet_init_interface = &g_wallet_init; + std::string WalletInit::GetHelpString(bool showDebug) { std::string strUsage = HelpMessageGroup(_("Wallet options:")); diff --git a/src/wallet/init.h b/src/wallet/init.h deleted file mode 100644 index f8be90d3e3..0000000000 --- a/src/wallet/init.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2009-2017 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_WALLET_INIT_H -#define BITCOIN_WALLET_INIT_H - -#include <walletinitinterface.h> -#include <string> - -class CRPCTable; -class CScheduler; - -class WalletInit : public WalletInitInterface { -public: - - //! Return the wallets help message. - std::string GetHelpString(bool showDebug) override; - - //! Wallets parameter interaction - bool ParameterInteraction() override; - - //! Register wallet RPCs. - void RegisterRPC(CRPCTable &tableRPC) override; - - //! Responsible for reading and validating the -wallet arguments and verifying the wallet database. - // This function will perform salvage on the wallet if requested, as long as only one wallet is - // being loaded (WalletParameterInteraction forbids -salvagewallet, -zapwallettxes or -upgradewallet with multiwallet). - bool Verify() override; - - //! Load wallet databases. - bool Open() override; - - //! Complete startup of wallets. - void Start(CScheduler& scheduler) override; - - //! Flush all wallets in preparation for shutdown. - void Flush() override; - - //! Stop all wallets. Wallets will be flushed first. - void Stop() override; - - //! Close all wallets. - void Close() override; -}; - -#endif // BITCOIN_WALLET_INIT_H diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 3f88c62c61..a3594aa692 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -6,7 +6,6 @@ #include <key_io.h> #include <rpc/safemode.h> #include <rpc/server.h> -#include <wallet/init.h> #include <validation.h> #include <script/script.h> #include <script/standard.h> diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index dbc1760c80..8dac547abb 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -12,7 +12,6 @@ #include <consensus/consensus.h> #include <consensus/validation.h> #include <fs.h> -#include <wallet/init.h> #include <key.h> #include <key_io.h> #include <keystore.h> diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index 898c32c708..22a0ac2924 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -661,22 +661,22 @@ class CWallet final : public CCryptoKeyStore, public CValidationInterface { private: static std::atomic<bool> fFlushScheduled; - std::atomic<bool> fAbortRescan; - std::atomic<bool> fScanningWallet; //controlled by WalletRescanReserver + std::atomic<bool> fAbortRescan{false}; + std::atomic<bool> fScanningWallet{false}; // controlled by WalletRescanReserver std::mutex mutexScanning; friend class WalletRescanReserver; - CWalletDB *pwalletdbEncryption; + CWalletDB *pwalletdbEncryption = nullptr; //! the current wallet version: clients below this version are not able to load the wallet - int nWalletVersion; + int nWalletVersion = FEATURE_BASE; //! the maximum wallet format version: memory-only variable that specifies to what version this wallet may be upgraded - int nWalletMaxVersion; + int nWalletMaxVersion = FEATURE_BASE; - int64_t nNextResend; - int64_t nLastResend; - bool fBroadcastTransactions; + int64_t nNextResend = 0; + int64_t nLastResend = 0; + bool fBroadcastTransactions = false; /** * Used to keep track of spent outpoints, and @@ -705,10 +705,10 @@ private: std::set<int64_t> setInternalKeyPool; std::set<int64_t> setExternalKeyPool; - int64_t m_max_keypool_index; + int64_t m_max_keypool_index = 0; std::map<CKeyID, int64_t> m_pool_key_to_index; - int64_t nTimeFirstKey; + int64_t nTimeFirstKey = 0; /** * Private version of AddWatchOnly method which does not accept a @@ -741,7 +741,7 @@ private: * * Protected by cs_main (see BlockUntilSyncedToCurrentChain) */ - const CBlockIndex* m_last_block_processed; + const CBlockIndex* m_last_block_processed = nullptr; public: /* @@ -780,12 +780,11 @@ public: typedef std::map<unsigned int, CMasterKey> MasterKeyMap; MasterKeyMap mapMasterKeys; - unsigned int nMasterKeyMaxID; + unsigned int nMasterKeyMaxID = 0; /** Construct wallet with specified name and database implementation. */ CWallet(std::string name, std::unique_ptr<CWalletDBWrapper> dbw) : m_name(std::move(name)), dbw(std::move(dbw)) { - SetNull(); } ~CWallet() @@ -794,24 +793,6 @@ public: pwalletdbEncryption = nullptr; } - void SetNull() - { - nWalletVersion = FEATURE_BASE; - nWalletMaxVersion = FEATURE_BASE; - nMasterKeyMaxID = 0; - pwalletdbEncryption = nullptr; - nOrderPosNext = 0; - nAccountingEntryNumber = 0; - nNextResend = 0; - nLastResend = 0; - m_max_keypool_index = 0; - nTimeFirstKey = 0; - fBroadcastTransactions = false; - nRelockTime = 0; - fAbortRescan = false; - fScanningWallet = false; - } - std::map<uint256, CWalletTx> mapWallet; std::list<CAccountingEntry> laccentries; @@ -819,8 +800,8 @@ public: typedef std::multimap<int64_t, TxPair > TxItems; TxItems wtxOrdered; - int64_t nOrderPosNext; - uint64_t nAccountingEntryNumber; + int64_t nOrderPosNext = 0; + uint64_t nAccountingEntryNumber = 0; std::map<uint256, int> mapRequestCount; std::map<CTxDestination, CAddressBookData> mapAddressBook; @@ -913,7 +894,7 @@ public: bool LoadWatchOnly(const CScript &dest); //! Holds a timestamp at which point the wallet is scheduled (externally) to be relocked. Caller must arrange for actual relocking to occur via Lock(). - int64_t nRelockTime; + int64_t nRelockTime = 0; bool Unlock(const SecureString& strWalletPassphrase); bool ChangeWalletPassphrase(const SecureString& strOldWalletPassphrase, const SecureString& strNewWalletPassphrase); diff --git a/src/walletinitinterface.h b/src/walletinitinterface.h index a7b52685dd..c7eee37ce5 100644 --- a/src/walletinitinterface.h +++ b/src/walletinitinterface.h @@ -34,18 +34,4 @@ public: virtual ~WalletInitInterface() {} }; -class DummyWalletInit : public WalletInitInterface { -public: - - std::string GetHelpString(bool showDebug) override {return std::string{};} - bool ParameterInteraction() override {return true;} - void RegisterRPC(CRPCTable &) override {} - bool Verify() override {return true;} - bool Open() override {return true;} - void Start(CScheduler& scheduler) override {} - void Flush() override {} - void Stop() override {} - void Close() override {} -}; - #endif // BITCOIN_WALLETINITINTERFACE_H |