Line data Source code
1 : // Copyright (c) 2015 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 PIVX_ZMQ_ZMQABSTRACTNOTIFIER_H 6 : #define PIVX_ZMQ_ZMQABSTRACTNOTIFIER_H 7 : 8 : #include "zmqconfig.h" 9 : 10 : class CBlockIndex; 11 : class CZMQAbstractNotifier; 12 : 13 : typedef CZMQAbstractNotifier* (*CZMQNotifierFactory)(); 14 : 15 : class CZMQAbstractNotifier 16 : { 17 : public: 18 4 : CZMQAbstractNotifier() : psocket(0) { } 19 : virtual ~CZMQAbstractNotifier(); 20 : 21 : template <typename T> 22 4 : static CZMQAbstractNotifier* Create() 23 : { 24 4 : return new T(); 25 : } 26 : 27 16 : std::string GetType() const { return type; } 28 4 : void SetType(const std::string &t) { type = t; } 29 8 : std::string GetAddress() const { return address; } 30 4 : void SetAddress(const std::string &a) { address = a; } 31 : 32 : virtual bool Initialize(void *pcontext) = 0; 33 : virtual void Shutdown() = 0; 34 : 35 : virtual bool NotifyBlock(const CBlockIndex *pindex); 36 : virtual bool NotifyTransaction(const CTransaction &transaction); 37 : 38 : protected: 39 : void *psocket; 40 : std::string type; 41 : std::string address; 42 : }; 43 : 44 : #endif // PIVX_ZMQ_ZMQABSTRACTNOTIFIER_H