// Copyright (c) 2015 The Bitcoin Core developers // Distributed under the GPLv3 software license, see the accompanying // file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html #ifndef HUSH_ZMQ_ZMQPUBLISHNOTIFIER_H #define HUSH_ZMQ_ZMQPUBLISHNOTIFIER_H #include "zmqabstractnotifier.h" class CBlockIndex; class CZMQAbstractPublishNotifier : public CZMQAbstractNotifier { private: uint32_t nSequence; //! upcounting per message sequence number public: /* send zmq multipart message parts: * command * data * message sequence number */ bool SendMessage(const char *command, const void* data, size_t size); bool Initialize(void *pcontext); void Shutdown(); }; class CZMQPublishHashBlockNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlock(const CBlockIndex *pindex); }; class CZMQPublishHashTransactionNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyTransaction(const CTransaction &transaction); }; class CZMQPublishRawBlockNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlock(const CBlockIndex *pindex); }; class CZMQPublishRawTransactionNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyTransaction(const CTransaction &transaction); }; class CZMQPublishCheckedBlockNotifier : public CZMQAbstractPublishNotifier { public: bool NotifyBlock(const CBlock &block); }; #endif // HUSH_ZMQ_ZMQPUBLISHNOTIFIER_H