diff options
Diffstat (limited to 'src/interfaces')
| -rw-r--r-- | src/interfaces/chain.h | 20 | ||||
| -rw-r--r-- | src/interfaces/wallet.cpp | 12 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h index 8a40cb4cd..30bc9f5f7 100644 --- a/src/interfaces/chain.h +++ b/src/interfaces/chain.h @@ -9,6 +9,8 @@ #include <string> #include <vector> +class CScheduler; + namespace interfaces { //! Interface for giving wallet processes access to blockchain state. @@ -24,6 +26,24 @@ class ChainClient { public: virtual ~ChainClient() {} + + //! Register rpcs. + virtual void registerRpcs() = 0; + + //! Check for errors before loading. + virtual bool verify() = 0; + + //! Load saved state. + virtual bool load() = 0; + + //! Start client execution and provide a scheduler. + virtual void start(CScheduler& scheduler) = 0; + + //! Save state to disk. + virtual void flush() = 0; + + //! Shut down client. + virtual void stop() = 0; }; //! Return implementation of Chain interface. diff --git a/src/interfaces/wallet.cpp b/src/interfaces/wallet.cpp index e9f4669f4..a29440ee4 100644 --- a/src/interfaces/wallet.cpp +++ b/src/interfaces/wallet.cpp @@ -7,6 +7,7 @@ #include <amount.h> #include <chain.h> #include <consensus/validation.h> +#include <init.h> #include <interfaces/chain.h> #include <interfaces/handler.h> #include <net.h> @@ -14,6 +15,8 @@ #include <policy/fees.h> #include <policy/policy.h> #include <primitives/transaction.h> +#include <rpc/server.h> +#include <scheduler.h> #include <script/ismine.h> #include <script/standard.h> #include <support/allocators/secure.h> @@ -25,7 +28,9 @@ #include <validation.h> #include <wallet/feebumper.h> #include <wallet/fees.h> +#include <wallet/rpcwallet.h> #include <wallet/wallet.h> +#include <wallet/walletutil.h> #include <memory> #include <string> @@ -470,6 +475,13 @@ public: : m_chain(chain), m_wallet_filenames(std::move(wallet_filenames)) { } + void registerRpcs() override { return RegisterWalletRPCCommands(::tableRPC); } + bool verify() override { return VerifyWallets(m_chain, m_wallet_filenames); } + bool load() override { return LoadWallets(m_chain, m_wallet_filenames); } + void start(CScheduler& scheduler) override { return StartWallets(scheduler); } + void flush() override { return FlushWallets(); } + void stop() override { return StopWallets(); } + ~WalletClientImpl() override { UnloadWallets(); } Chain& m_chain; std::vector<std::string> m_wallet_filenames; |