// Copyright (c) 2015-2020 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_ZMQ_ZMQPUBLISHNOTIFIER_H #define BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H #include class CBlockIndex; class CZMQAbstractPublishNotifier : public CZMQAbstractNotifier { private: uint32_t nSequence {0U}; //!< upcounting per message sequence number public: /* send zmq multipart message parts: * command * data * message sequence number */ bool SendZmqMessage(const char *command, const void* data, size_t size); bool Initialize(void *pcontext) override; void Shutdown() override; }; class CZMQPublishHashBlockNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlock(const CBlockIndex *pindex) override; }; class CZMQPublishHashTransactionNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyTransaction(const CTransaction &transaction) override; }; class CZMQPublishRawBlockNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlock(const CBlockIndex *pindex) override; }; class CZMQPublishRawTransactionNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyTransaction(const CTransaction &transaction) override; }; class CZMQPublishSequenceNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlockConnect(const CBlockIndex *pindex) override; bool NotifyBlockDisconnect(const CBlockIndex *pindex) override; bool NotifyTransactionAcceptance(const CTransaction &transaction, uint64_t mempool_sequence) override; bool NotifyTransactionRemoval(const CTransaction &transaction, uint64_t mempool_sequence) override; }; #endif // BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H