Bitcoin ABC 0.32.4
P2P Digital Currency
zmqabstractnotifier.h
Go to the documentation of this file.
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 <cstdint>
9#include <functional>
10#include <memory>
11#include <string>
12
13class CBlockIndex;
14class CTransaction;
16
18 std::function<std::unique_ptr<CZMQAbstractNotifier>()>;
19
21public:
22 static const int DEFAULT_ZMQ_SNDHWM{1000};
23
25 : psocket(nullptr),
27 virtual ~CZMQAbstractNotifier();
28
29 template <typename T>
30 static std::unique_ptr<CZMQAbstractNotifier> Create() {
31 return std::make_unique<T>();
32 }
33
34 std::string GetType() const { return type; }
35 void SetType(const std::string &t) { type = t; }
36 std::string GetAddress() const { return address; }
37 void SetAddress(const std::string &a) { address = a; }
40 }
41 void SetOutboundMessageHighWaterMark(const int sndhwm) {
42 if (sndhwm >= 0) {
44 }
45 }
46
47 virtual bool Initialize(void *pcontext) = 0;
48 virtual void Shutdown() = 0;
49
50 // Notifies of ConnectTip result, i.e., new active tip only
51 virtual bool NotifyBlock(const CBlockIndex *pindex);
52 // Notifies of every block connection
53 virtual bool NotifyBlockConnect(const CBlockIndex *pindex);
54 // Notifies of every block disconnection
55 virtual bool NotifyBlockDisconnect(const CBlockIndex *pindex);
56 // Notifies of every mempool acceptance
57 virtual bool NotifyTransactionAcceptance(const CTransaction &transaction,
58 uint64_t mempool_sequence);
59 // Notifies of every mempool removal, except inclusion in blocks
60 virtual bool NotifyTransactionRemoval(const CTransaction &transaction,
61 uint64_t mempool_sequence);
62 // Notifies of transactions added to mempool or appearing in blocks
63 virtual bool NotifyTransaction(const CTransaction &transaction);
64
65protected:
66 void *psocket;
67 std::string type;
68 std::string address;
70};
71
72#endif // BITCOIN_ZMQ_ZMQABSTRACTNOTIFIER_H
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: blockindex.h:25
The basic transaction that is broadcasted on the network and contained in blocks.
Definition: transaction.h:192
std::string GetType() const
virtual void Shutdown()=0
virtual bool NotifyBlockConnect(const CBlockIndex *pindex)
static const int DEFAULT_ZMQ_SNDHWM
void SetOutboundMessageHighWaterMark(const int sndhwm)
static std::unique_ptr< CZMQAbstractNotifier > Create()
void SetAddress(const std::string &a)
virtual bool NotifyTransactionRemoval(const CTransaction &transaction, uint64_t mempool_sequence)
virtual bool NotifyBlock(const CBlockIndex *pindex)
virtual bool Initialize(void *pcontext)=0
virtual bool NotifyTransaction(const CTransaction &transaction)
std::string GetAddress() const
virtual bool NotifyBlockDisconnect(const CBlockIndex *pindex)
void SetType(const std::string &t)
int GetOutboundMessageHighWaterMark() const
virtual bool NotifyTransactionAcceptance(const CTransaction &transaction, uint64_t mempool_sequence)
std::function< std::unique_ptr< CZMQAbstractNotifier >()> CZMQNotifierFactory