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 xrpl::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(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
82
88 virtual void
89 unsubProposedAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
90
95 virtual void
96 forwardProposedTransaction(boost::json::object const& receivedTxJson) = 0;
97
105 virtual boost::json::object
106 subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const& subscriber) = 0;
107
112 virtual void
113 unsubLedger(SubscriberSharedPtr const& subscriber) = 0;
114
122 virtual void
124 xrpl::LedgerHeader const& lgrInfo,
125 xrpl::Fees const& fees,
126 std::string const& ledgerRange,
127 std::uint32_t txnCount
128 ) = 0;
129
134 virtual void
135 subManifest(SubscriberSharedPtr const& subscriber) = 0;
136
141 virtual void
142 unsubManifest(SubscriberSharedPtr const& subscriber) = 0;
143
148 virtual void
149 forwardManifest(boost::json::object const& manifestJson) = 0;
150
155 virtual void
156 subValidation(SubscriberSharedPtr const& subscriber) = 0;
157
162 virtual void
163 unsubValidation(SubscriberSharedPtr const& subscriber) = 0;
164
169 virtual void
170 forwardValidation(boost::json::object const& validationJson) = 0;
171
176 virtual void
177 subTransactions(SubscriberSharedPtr const& subscriber) = 0;
178
183 virtual void
184 unsubTransactions(SubscriberSharedPtr const& subscriber) = 0;
185
192 virtual void
193 subAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
194
200 virtual void
201 unsubAccount(xrpl::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
202
209 virtual void
210 subBook(xrpl::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
211
217 virtual void
218 unsubBook(xrpl::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
219
225 virtual void
227 data::TransactionAndMetadata const& txMeta,
228 xrpl::LedgerHeader const& lgrInfo
229 ) = 0;
230
236 [[nodiscard]] virtual boost::json::object
237 report() const = 0;
238
243 virtual void
244 setNetworkID(uint32_t networkID) = 0;
245
251 [[nodiscard]] virtual uint32_t
252 getNetworkID() const = 0;
253};
254
255} // namespace feed
Interface of subscription manager. A subscription manager is responsible for managing the subscriptio...
Definition SubscriptionManagerInterface.hpp:25
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 unsubManifest(SubscriberSharedPtr const &subscriber)=0
Unsubscribe to the manifest feed.
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