Changeset View
Changeset View
Standalone View
Standalone View
src/zmq/zmqabstractnotifier.h
// Copyright (c) 2015 The Bitcoin Core developers | // Copyright (c) 2015 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H | #ifndef BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H | ||||
#define BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H | #define BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H | ||||
#include <zmq/zmqconfig.h> | #include <zmq/zmqconfig.h> | ||||
class CBlockIndex; | class CBlockIndex; | ||||
class CZMQAbstractNotifier; | class CZMQAbstractNotifier; | ||||
typedef CZMQAbstractNotifier *(*CZMQNotifierFactory)(); | typedef CZMQAbstractNotifier *(*CZMQNotifierFactory)(); | ||||
class CZMQAbstractNotifier { | class CZMQAbstractNotifier { | ||||
public: | public: | ||||
CZMQAbstractNotifier() : psocket(nullptr) {} | static const int DEFAULT_ZMQ_SNDHWM{1000}; | ||||
CZMQAbstractNotifier() | |||||
: psocket(nullptr), | |||||
outbound_message_high_water_mark(DEFAULT_ZMQ_SNDHWM) {} | |||||
virtual ~CZMQAbstractNotifier(); | virtual ~CZMQAbstractNotifier(); | ||||
template <typename T> static CZMQAbstractNotifier *Create() { | template <typename T> static CZMQAbstractNotifier *Create() { | ||||
return new T(); | return new T(); | ||||
} | } | ||||
std::string GetType() const { return type; } | std::string GetType() const { return type; } | ||||
void SetType(const std::string &t) { type = t; } | void SetType(const std::string &t) { type = t; } | ||||
std::string GetAddress() const { return address; } | std::string GetAddress() const { return address; } | ||||
void SetAddress(const std::string &a) { address = a; } | 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 bool Initialize(void *pcontext) = 0; | ||||
virtual void Shutdown() = 0; | virtual void Shutdown() = 0; | ||||
virtual bool NotifyBlock(const CBlockIndex *pindex); | virtual bool NotifyBlock(const CBlockIndex *pindex); | ||||
virtual bool NotifyTransaction(const CTransaction &transaction); | virtual bool NotifyTransaction(const CTransaction &transaction); | ||||
protected: | protected: | ||||
void *psocket; | void *psocket; | ||||
std::string type; | std::string type; | ||||
std::string address; | std::string address; | ||||
int outbound_message_high_water_mark; // aka SNDHWM | |||||
}; | }; | ||||
#endif // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H | #endif // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H |