1 // Copyright (c) 2015-2018 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #ifndef BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H 6 #define BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H 7 8 #include <zmq/zmqabstractnotifier.h> 9 10 class CBlockIndex; 11 12 class CZMQAbstractPublishNotifier : public CZMQAbstractNotifier 13 { 14 private: 15 uint32_t nSequence {0U}; //!< upcounting per message sequence number 16 17 public: 18 19 /* send zmq multipart message 20 parts: 21 * command 22 * data 23 * message sequence number 24 */ 25 bool SendMessage(const char *command, const void* data, size_t size); 26 27 bool Initialize(void *pcontext) override; 28 void Shutdown() override; 29 }; 30 31 class CZMQPublishHashBlockNotifier : public CZMQAbstractPublishNotifier 32 { 33 public: 34 bool NotifyBlock(const CBlockIndex *pindex) override; 35 }; 36 37 class CZMQPublishHashTransactionNotifier : public CZMQAbstractPublishNotifier 38 { 39 public: 40 bool NotifyTransaction(const CTransaction &transaction) override; 41 }; 42 43 class CZMQPublishRawBlockNotifier : public CZMQAbstractPublishNotifier 44 { 45 public: 46 bool NotifyBlock(const CBlockIndex *pindex) override; 47 }; 48 49 class CZMQPublishRawTransactionNotifier : public CZMQAbstractPublishNotifier 50 { 51 public: 52 bool NotifyTransaction(const CTransaction &transaction) override; 53 }; 54 55 #endif // BITCOIN_ZMQ_ZMQPUBLISHNOTIFIER_H 56