]>
Commit | Line | Data |
---|---|---|
26c16d9d JT |
1 | // Copyright (c) 2009-2010 Satoshi Nakamoto |
2 | // Copyright (c) 2009-2014 The Bitcoin Core developers | |
3 | // Distributed under the MIT software license, see the accompanying | |
4 | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | |
5 | ||
6 | #ifndef BITCOIN_VALIDATIONINTERFACE_H | |
7 | #define BITCOIN_VALIDATIONINTERFACE_H | |
8 | ||
9 | #include <boost/signals2/signal.hpp> | |
10 | ||
de42390f JG |
11 | #include "zcash/IncrementalMerkleTree.hpp" |
12 | ||
26c16d9d | 13 | class CBlock; |
769e031c | 14 | class CBlockIndex; |
63e4c9cd | 15 | struct CBlockLocator; |
26c16d9d JT |
16 | class CTransaction; |
17 | class CValidationInterface; | |
18 | class CValidationState; | |
19 | class uint256; | |
20 | ||
21 | // These functions dispatch to one or all registered wallets | |
22 | ||
23 | /** Register a wallet to receive updates from core */ | |
24 | void RegisterValidationInterface(CValidationInterface* pwalletIn); | |
25 | /** Unregister a wallet from core */ | |
26 | void UnregisterValidationInterface(CValidationInterface* pwalletIn); | |
27 | /** Unregister all wallets from core */ | |
28 | void UnregisterAllValidationInterfaces(); | |
29 | /** Push an updated transaction to all registered wallets */ | |
30 | void SyncWithWallets(const CTransaction& tx, const CBlock* pblock = NULL); | |
1cdb961b | 31 | void EraseFromWallets(const uint256 &hash); |
26c16d9d JT |
32 | |
33 | class CValidationInterface { | |
34 | protected: | |
6a793d9c | 35 | virtual void UpdatedBlockTip(const CBlockIndex *pindex) {} |
0a7bcb7e PK |
36 | virtual void SyncTransaction(const CTransaction &tx, const CBlock *pblock) {} |
37 | virtual void EraseFromWallet(const uint256 &hash) {} | |
de42390f | 38 | virtual void ChainTip(const CBlockIndex *pindex, const CBlock *pblock, ZCIncrementalMerkleTree tree, bool added) {} |
0a7bcb7e PK |
39 | virtual void SetBestChain(const CBlockLocator &locator) {} |
40 | virtual void UpdatedTransaction(const uint256 &hash) {} | |
41 | virtual void Inventory(const uint256 &hash) {} | |
42 | virtual void ResendWalletTransactions(int64_t nBestBlockTime) {} | |
43 | virtual void BlockChecked(const CBlock&, const CValidationState&) {} | |
26c16d9d JT |
44 | friend void ::RegisterValidationInterface(CValidationInterface*); |
45 | friend void ::UnregisterValidationInterface(CValidationInterface*); | |
46 | friend void ::UnregisterAllValidationInterfaces(); | |
47 | }; | |
48 | ||
49 | struct CMainSignals { | |
7e6ec078 | 50 | /** Notifies listeners of updated block chain tip */ |
6a793d9c | 51 | boost::signals2::signal<void (const CBlockIndex *)> UpdatedBlockTip; |
26c16d9d JT |
52 | /** Notifies listeners of updated transaction data (transaction, and optionally the block it is found in. */ |
53 | boost::signals2::signal<void (const CTransaction &, const CBlock *)> SyncTransaction; | |
54 | /** Notifies listeners of an erased transaction (currently disabled, requires transaction replacement). */ | |
55 | boost::signals2::signal<void (const uint256 &)> EraseTransaction; | |
56 | /** Notifies listeners of an updated transaction without new data (for now: a coinbase potentially becoming visible). */ | |
57 | boost::signals2::signal<void (const uint256 &)> UpdatedTransaction; | |
769e031c | 58 | /** Notifies listeners of a change to the tip of the active block chain. */ |
de42390f | 59 | boost::signals2::signal<void (const CBlockIndex *, const CBlock *, ZCIncrementalMerkleTree, bool)> ChainTip; |
26c16d9d JT |
60 | /** Notifies listeners of a new active block chain. */ |
61 | boost::signals2::signal<void (const CBlockLocator &)> SetBestChain; | |
62 | /** Notifies listeners about an inventory item being seen on the network. */ | |
63 | boost::signals2::signal<void (const uint256 &)> Inventory; | |
64 | /** Tells listeners to broadcast their data. */ | |
0f5954c4 | 65 | boost::signals2::signal<void (int64_t nBestBlockTime)> Broadcast; |
26c16d9d JT |
66 | /** Notifies listeners of a block validation result */ |
67 | boost::signals2::signal<void (const CBlock&, const CValidationState&)> BlockChecked; | |
68 | }; | |
69 | ||
70 | CMainSignals& GetMainSignals(); | |
71 | ||
72 | #endif // BITCOIN_VALIDATIONINTERFACE_H |