git / moonbite-core / src/zmq/zmqabstractnotifier.h · raw

// Copyright (c) 2015-2018 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_ZMQABSTRACTNOTIFIER_H#define BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H#include <util/memory.h>#include <memory>#include <string>#include <cstdint>class CBlockIndex;class CTransaction;class CZMQAbstractNotifier;using CZMQNotifierFactory = std::unique_ptr<CZMQAbstractNotifier> (*)();class CZMQAbstractNotifier{public:    static const int DEFAULT_ZMQ_SNDHWM {1000};    CZMQAbstractNotifier() : psocket(nullptr), outbound_message_high_water_mark(DEFAULT_ZMQ_SNDHWM) { }    virtual ~CZMQAbstractNotifier();    template <typename T>    static std::unique_ptr<CZMQAbstractNotifier> Create()    {        return MakeUnique<T>();    }    std::string GetType() const { return type; }    void SetType(const std::string &t) { type = t; }    std::string GetAddress() const { return address; }    void SetAddress(const std::string &a) { address = a; }    int GetOutboundMessageHighWaterMark() const { return outbound_message_high_water_mark; }    void SetOutboundMessageHighWaterMark(const int sndhwm) {        if (sndhwm >= 0) {            outbound_message_high_water_mark = sndhwm;        }    }    virtual bool Initialize(void *pcontext) = 0;    virtual void Shutdown() = 0;    // Notifies of ConnectTip result, i.e., new active tip only    virtual bool NotifyBlock(const CBlockIndex *pindex);    // Notifies of every block connection    virtual bool NotifyBlockConnect(const CBlockIndex *pindex);    // Notifies of every block disconnection    virtual bool NotifyBlockDisconnect(const CBlockIndex *pindex);    // Notifies of every mempool acceptance    virtual bool NotifyTransactionAcceptance(const CTransaction &transaction, uint64_t mempool_sequence);    // Notifies of every mempool removal, except inclusion in blocks    virtual bool NotifyTransactionRemoval(const CTransaction &transaction, uint64_t mempool_sequence);    // Notifies of transactions added to mempool or appearing in blocks    virtual bool NotifyTransaction(const CTransaction &transaction);protected:    void *psocket;    std::string type;    std::string address;    int outbound_message_high_water_mark; // aka SNDHWM};#endif // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H