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 BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H 6 #define BITCOIN_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: CZMQAbstractNotifier()18 CZMQAbstractNotifier() : psocket(0) { } 19 virtual ~CZMQAbstractNotifier(); 20 21 template <typename T> Create()22 static CZMQAbstractNotifier* Create() 23 { 24 return new T(); 25 } 26 GetType()27 std::string GetType() const { return type; } SetType(const std::string & t)28 void SetType(const std::string &t) { type = t; } GetAddress()29 std::string GetAddress() const { return address; } SetAddress(const std::string & a)30 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 // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H 45