Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
SubscriptionManagerInterface.hpp
1#pragma once
2
3#include "data/Types.hpp"
4#include "feed/Types.hpp"
5
6#include <boost/asio/executor_work_guard.hpp>
7#include <boost/asio/io_context.hpp>
8#include <boost/asio/spawn.hpp>
9#include <boost/json/object.hpp>
10#include <xrpl/protocol/AccountID.h>
11#include <xrpl/protocol/Book.h>
12#include <xrpl/protocol/Fees.h>
13#include <xrpl/protocol/LedgerHeader.h>
14
15#include <cstdint>
16#include <string>
17#include <vector>
18
19namespace feed {
20
26public:
27 virtual ~SubscriptionManagerInterface() = default;
28
32 virtual void
33 stop() = 0;
34
39 virtual void
40 subBookChanges(SubscriberSharedPtr const& subscriber) = 0;
41
46 virtual void
47 unsubBookChanges(SubscriberSharedPtr const& subscriber) = 0;
48
54 virtual void
56 ripple::LedgerHeader const& lgrInfo,
57 std::vector<data::TransactionAndMetadata> const& transactions
58 ) = 0;
59
64 virtual void
65 subProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
66
71 virtual void
72 unsubProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
73
80 virtual void
81 subProposedAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
82
88 virtual void
90 ripple::AccountID const& account,
91 SubscriberSharedPtr const& subscriber
92 ) = 0;
93
98 virtual void
99 forwardProposedTransaction(boost::json::object const& receivedTxJson) = 0;
100
108 virtual boost::json::object
109 subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const& subscriber) = 0;
110
115 virtual void
116 unsubLedger(SubscriberSharedPtr const& subscriber) = 0;
117
125 virtual void
127 ripple::LedgerHeader const& lgrInfo,
128 ripple::Fees const& fees,
129 std::string const& ledgerRange,
130 std::uint32_t txnCount
131 ) = 0;
132
137 virtual void
138 subManifest(SubscriberSharedPtr const& subscriber) = 0;
139
144 virtual void
145 unsubManifest(SubscriberSharedPtr const& subscriber) = 0;
146
151 virtual void
152 forwardManifest(boost::json::object const& manifestJson) = 0;
153
158 virtual void
159 subValidation(SubscriberSharedPtr const& subscriber) = 0;
160
165 virtual void
166 unsubValidation(SubscriberSharedPtr const& subscriber) = 0;
167
172 virtual void
173 forwardValidation(boost::json::object const& validationJson) = 0;
174
179 virtual void
180 subTransactions(SubscriberSharedPtr const& subscriber) = 0;
181
186 virtual void
187 unsubTransactions(SubscriberSharedPtr const& subscriber) = 0;
188
195 virtual void
196 subAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
197
203 virtual void
204 unsubAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
205
212 virtual void
213 subBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
214
220 virtual void
221 unsubBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
222
228 virtual void
230 data::TransactionAndMetadata const& txMeta,
231 ripple::LedgerHeader const& lgrInfo
232 ) = 0;
233
239 virtual boost::json::object
240 report() const = 0;
241
246 virtual void
247 setNetworkID(uint32_t networkID) = 0;
248
254 virtual uint32_t
255 getNetworkID() const = 0;
256};
257
258} // namespace feed
Interface of subscription manager. A subscription manager is responsible for managing the subscriptio...
Definition SubscriptionManagerInterface.hpp:25
virtual void subBookChanges(SubscriberSharedPtr const &subscriber)=0
Subscribe to the book changes feed.
virtual void unsubProposedTransactions(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the proposed transactions feed.
virtual void setNetworkID(uint32_t networkID)=0
Set the networkID.
virtual void subAccount(ripple::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed, only receive the feed when particular account is affected.
virtual boost::json::object report() const =0
Get the number of subscribers.
virtual void unsubAccount(ripple::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed for particular account.
virtual void pubBookChanges(ripple::LedgerHeader const &lgrInfo, std::vector< data::TransactionAndMetadata > const &transactions)=0
Publish the book changes feed.
virtual uint32_t getNetworkID() const =0
Get the networkID.
virtual void subBook(ripple::Book const &book, SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed, only receive feed when particular order book is affected.
virtual void pubLedger(ripple::LedgerHeader const &lgrInfo, ripple::Fees const &fees, std::string const &ledgerRange, std::uint32_t txnCount)=0
Publish the ledger feed.
virtual void forwardValidation(boost::json::object const &validationJson)=0
Forward the validation feed.
virtual void subValidation(SubscriberSharedPtr const &subscriber)=0
Subscribe to the validation feed.
virtual void unsubValidation(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the validation feed.
virtual void unsubTransactions(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed.
virtual void unsubBookChanges(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the book changes feed.
virtual void forwardProposedTransaction(boost::json::object const &receivedTxJson)=0
Forward the proposed transactions feed.
virtual void stop()=0
Stop the SubscriptionManager and wait for all jobs to finish.
virtual void forwardManifest(boost::json::object const &manifestJson)=0
Forward the manifest feed.
virtual void subManifest(SubscriberSharedPtr const &subscriber)=0
Subscribe to the manifest feed.
virtual void unsubProposedAccount(ripple::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the proposed transactions feed for particular account.
virtual void pubTransaction(data::TransactionAndMetadata const &txMeta, ripple::LedgerHeader const &lgrInfo)=0
Forward the transactions feed.
virtual void subProposedTransactions(SubscriberSharedPtr const &subscriber)=0
Subscribe to the proposed transactions feed.
virtual void subProposedAccount(ripple::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Subscribe to the proposed transactions feed, only receive the feed when particular account is affecte...
virtual boost::json::object subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const &subscriber)=0
Subscribe to the ledger feed.
virtual void subTransactions(SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed.
virtual void unsubManifest(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the manifest feed.
virtual void unsubBook(ripple::Book const &book, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed for particular order book.
virtual void unsubLedger(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the ledger feed.
This namespace implements everything related to subscriptions.
Definition BookChangesFeed.hpp:14
Represents a transaction and its metadata bundled together.
Definition Types.hpp:49