diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2015-03-24 18:06:54 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2015-03-24 18:12:56 +0100 |
commit | 8d2fbfa49141172e1c63f5ab7b684a1f9e210571 (patch) | |
tree | f8cc7e9b3268bea6b3333a9bc9f3a3f48eb87fbb /src/validationinterface.h | |
parent | 22cfe23196c5006d6dd79e1e1a24323148246bde (diff) | |
parent | 8a893c949bf6b011c8ae1645888576bf236db79c (diff) |
Merge pull request #5681
8a893c9 Includes: Do not include main.h from any other header (Jorge Timón)
eca0b1e Includes: MOVEONLY: move more method definitions out of wallet.h (Jorge Timón)
26c16d9 Includes: Refactor: Move CValidationInterface and CMainSignals out of main (Jorge Timón)
Diffstat (limited to 'src/validationinterface.h')
-rw-r--r-- | src/validationinterface.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/validationinterface.h b/src/validationinterface.h new file mode 100644 index 0000000000..b21b6e5782 --- /dev/null +++ b/src/validationinterface.h @@ -0,0 +1,62 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2009-2014 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_VALIDATIONINTERFACE_H +#define BITCOIN_VALIDATIONINTERFACE_H + +#include <boost/signals2/signal.hpp> + +class CBlock; +class CBlockLocator; +class CTransaction; +class CValidationInterface; +class CValidationState; +class uint256; + +// These functions dispatch to one or all registered wallets + +/** Register a wallet to receive updates from core */ +void RegisterValidationInterface(CValidationInterface* pwalletIn); +/** Unregister a wallet from core */ +void UnregisterValidationInterface(CValidationInterface* pwalletIn); +/** Unregister all wallets from core */ +void UnregisterAllValidationInterfaces(); +/** Push an updated transaction to all registered wallets */ +void SyncWithWallets(const CTransaction& tx, const CBlock* pblock = NULL); + +class CValidationInterface { +protected: + virtual void SyncTransaction(const CTransaction &tx, const CBlock *pblock) {}; + virtual void EraseFromWallet(const uint256 &hash) {}; + virtual void SetBestChain(const CBlockLocator &locator) {}; + virtual void UpdatedTransaction(const uint256 &hash) {}; + virtual void Inventory(const uint256 &hash) {}; + virtual void ResendWalletTransactions() {}; + virtual void BlockChecked(const CBlock&, const CValidationState&) {}; + friend void ::RegisterValidationInterface(CValidationInterface*); + friend void ::UnregisterValidationInterface(CValidationInterface*); + friend void ::UnregisterAllValidationInterfaces(); +}; + +struct CMainSignals { + /** Notifies listeners of updated transaction data (transaction, and optionally the block it is found in. */ + boost::signals2::signal<void (const CTransaction &, const CBlock *)> SyncTransaction; + /** Notifies listeners of an erased transaction (currently disabled, requires transaction replacement). */ + boost::signals2::signal<void (const uint256 &)> EraseTransaction; + /** Notifies listeners of an updated transaction without new data (for now: a coinbase potentially becoming visible). */ + boost::signals2::signal<void (const uint256 &)> UpdatedTransaction; + /** Notifies listeners of a new active block chain. */ + boost::signals2::signal<void (const CBlockLocator &)> SetBestChain; + /** Notifies listeners about an inventory item being seen on the network. */ + boost::signals2::signal<void (const uint256 &)> Inventory; + /** Tells listeners to broadcast their data. */ + boost::signals2::signal<void ()> Broadcast; + /** Notifies listeners of a block validation result */ + boost::signals2::signal<void (const CBlock&, const CValidationState&)> BlockChecked; +}; + +CMainSignals& GetMainSignals(); + +#endif // BITCOIN_VALIDATIONINTERFACE_H |