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#include <xrpl/protocol/UintTypes.h>
15
16#include <cstdint>
17#include <string>
18#include <vector>
19
20namespace feed {
21
27public:
28 virtual ~SubscriptionManagerInterface() = default;
29
33 virtual void
34 stop() = 0;
35
40 virtual void
41 subBookChanges(SubscriberSharedPtr const& subscriber) = 0;
42
47 virtual void
48 unsubBookChanges(SubscriberSharedPtr const& subscriber) = 0;
49
55 virtual void
57 xrpl::LedgerHeader const& lgrInfo,
58 std::vector<data::TransactionAndMetadata> const& transactions
59 ) = 0;
60
65 virtual void
66 subProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
67
72 virtual void
73 unsubProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
74
81 virtual void
82 subProposedAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
83
89 virtual void
90 unsubProposedAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
91
96 virtual void
97 forwardProposedTransaction(boost::json::object const& receivedTxJson) = 0;
98
106 virtual boost::json::object
107 subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const& subscriber) = 0;
108
113 virtual void
114 unsubLedger(SubscriberSharedPtr const& subscriber) = 0;
115
123 virtual void
125 xrpl::LedgerHeader const& lgrInfo,
126 xrpl::Fees const& fees,
127 std::string const& ledgerRange,
128 std::uint32_t txnCount
129 ) = 0;
130
135 virtual void
136 subManifest(SubscriberSharedPtr const& subscriber) = 0;
137
142 virtual void
143 unsubManifest(SubscriberSharedPtr const& subscriber) = 0;
144
149 virtual void
150 forwardManifest(boost::json::object const& manifestJson) = 0;
151
156 virtual void
157 subValidation(SubscriberSharedPtr const& subscriber) = 0;
158
163 virtual void
164 unsubValidation(SubscriberSharedPtr const& subscriber) = 0;
165
170 virtual void
171 forwardValidation(boost::json::object const& validationJson) = 0;
172
177 virtual void
178 subTransactions(SubscriberSharedPtr const& subscriber) = 0;
179
184 virtual void
185 unsubTransactions(SubscriberSharedPtr const& subscriber) = 0;
186
193 virtual void
194 subAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
195
201 virtual void
202 unsubAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
203
210 virtual void
211 subBook(xrpl::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
212
218 virtual void
219 unsubBook(xrpl::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
220
227 virtual void
228 subMPTIssuance(xrpl::MPTID const& mptIssuanceID, SubscriberSharedPtr const& subscriber) = 0;
229
235 virtual void
236 unsubMPTIssuance(xrpl::MPTID const& mptIssuanceID, SubscriberSharedPtr const& subscriber) = 0;
237
243 virtual void
245 data::TransactionAndMetadata const& txMeta,
246 xrpl::LedgerHeader const& lgrInfo
247 ) = 0;
248
254 [[nodiscard]] virtual boost::json::object
255 report() const = 0;
256
261 virtual void
262 setNetworkID(uint32_t networkID) = 0;
263
269 [[nodiscard]] virtual uint32_t
270 getNetworkID() const = 0;
271};
272
273} // namespace feed
Interface of subscription manager. A subscription manager is responsible for managing the subscriptio...
Definition SubscriptionManagerInterface.hpp:26
virtual void unsubBook(xrpl::Book const &book, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed for particular order book.
virtual void subBookChanges(SubscriberSharedPtr const &subscriber)=0
Subscribe to the book changes feed.
virtual void subProposedAccount(xrpl::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Subscribe to the proposed transactions feed, only receive the feed when particular account is affecte...
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(xrpl::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 pubLedger(xrpl::LedgerHeader const &lgrInfo, xrpl::Fees const &fees, std::string const &ledgerRange, std::uint32_t txnCount)=0
Publish the ledger feed.
virtual uint32_t getNetworkID() const =0
Get the networkID.
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 pubTransaction(data::TransactionAndMetadata const &txMeta, xrpl::LedgerHeader const &lgrInfo)=0
Forward the 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 subProposedTransactions(SubscriberSharedPtr const &subscriber)=0
Subscribe to the proposed transactions feed.
virtual void unsubAccount(xrpl::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed for particular account.
virtual void subBook(xrpl::Book const &book, SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed, only receive feed when particular order book is affected.
virtual boost::json::object subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const &subscriber)=0
Subscribe to the ledger feed.
virtual void pubBookChanges(xrpl::LedgerHeader const &lgrInfo, std::vector< data::TransactionAndMetadata > const &transactions)=0
Publish the book changes feed.
virtual void unsubProposedAccount(xrpl::AccountID const &account, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the proposed transactions feed for particular account.
virtual void subTransactions(SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed.
virtual void unsubMPTIssuance(xrpl::MPTID const &mptIssuanceID, SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the transactions feed for particular MPT issuance.
virtual void unsubManifest(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the manifest feed.
virtual void subMPTIssuance(xrpl::MPTID const &mptIssuanceID, SubscriberSharedPtr const &subscriber)=0
Subscribe to the transactions feed, only receive the feed when particular MPT issuance is affected.
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