// Copyright (c) 2015 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_DSNOTIFICATIONINTERFACE_H #define BITCOIN_DSNOTIFICATIONINTERFACE_H #include "validationinterface.h" class CDSNotificationInterface : public CValidationInterface { public: CDSNotificationInterface(CConnman& connmanIn): connman(connmanIn) {} virtual ~CDSNotificationInterface() = default; // a small helper to initialize current block height in sub-modules on startup void InitializeCurrentBlockTip(); protected: // CValidationInterface void AcceptedBlockHeader(const CBlockIndex *pindexNew) override; void NotifyHeaderTip(const CBlockIndex *pindexNew, bool fInitialDownload) override; void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) override; void TransactionAddedToMempool(const CTransactionRef& tx) override; void BlockConnected(const std::shared_ptr& pblock, const CBlockIndex* pindex, const std::vector& vtxConflicted) override; void BlockDisconnected(const std::shared_ptr& pblock, const CBlockIndex* pindexDisconnected) override; void NotifyMasternodeListChanged(bool undo, const CDeterministicMNList& oldMNList, const CDeterministicMNListDiff& diff) override; void NotifyChainLock(const CBlockIndex* pindex, const llmq::CChainLockSig& clsig) override; private: CConnman& connman; /* Used by TransactionAddedToMemorypool/BlockConnected/Disconnected */ void SyncTransaction(const CTransactionRef& tx, const CBlockIndex* pindex = nullptr, int posInBlock = 0); }; #endif // BITCOIN_DSNOTIFICATIONINTERFACE_H