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