Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
SubscriptionManagerInterface.hpp
1//------------------------------------------------------------------------------
2/*
3 This file is part of clio: https://github.com/XRPLF/clio
4 Copyright (c) 2024, the clio developers.
5
6 Permission to use, copy, modify, and distribute this software for any
7 purpose with or without fee is hereby granted, provided that the above
8 copyright notice and this permission notice appear in all copies.
9
10 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*/
18//==============================================================================
19
20#pragma once
21
22#include "data/Types.hpp"
23#include "feed/Types.hpp"
24
25#include <boost/asio/executor_work_guard.hpp>
26#include <boost/asio/io_context.hpp>
27#include <boost/asio/spawn.hpp>
28#include <boost/json/object.hpp>
29#include <xrpl/protocol/AccountID.h>
30#include <xrpl/protocol/Book.h>
31#include <xrpl/protocol/Fees.h>
32#include <xrpl/protocol/LedgerHeader.h>
33
34#include <cstdint>
35#include <string>
36#include <vector>
37
38namespace feed {
39
45public:
46 virtual ~SubscriptionManagerInterface() = default;
47
51 virtual void
52 stop() = 0;
53
58 virtual void
59 subBookChanges(SubscriberSharedPtr const& subscriber) = 0;
60
65 virtual void
66 unsubBookChanges(SubscriberSharedPtr const& subscriber) = 0;
67
73 virtual void
75 ripple::LedgerHeader const& lgrInfo,
76 std::vector<data::TransactionAndMetadata> const& transactions
77 ) = 0;
78
83 virtual void
84 subProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
85
90 virtual void
91 unsubProposedTransactions(SubscriberSharedPtr const& subscriber) = 0;
92
99 virtual void
100 subProposedAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
101
107 virtual void
109 ripple::AccountID const& account,
110 SubscriberSharedPtr const& subscriber
111 ) = 0;
112
117 virtual void
118 forwardProposedTransaction(boost::json::object const& receivedTxJson) = 0;
119
127 virtual boost::json::object
128 subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const& subscriber) = 0;
129
134 virtual void
135 unsubLedger(SubscriberSharedPtr const& subscriber) = 0;
136
144 virtual void
146 ripple::LedgerHeader const& lgrInfo,
147 ripple::Fees const& fees,
148 std::string const& ledgerRange,
149 std::uint32_t txnCount
150 ) = 0;
151
156 virtual void
157 subManifest(SubscriberSharedPtr const& subscriber) = 0;
158
163 virtual void
164 unsubManifest(SubscriberSharedPtr const& subscriber) = 0;
165
170 virtual void
171 forwardManifest(boost::json::object const& manifestJson) = 0;
172
177 virtual void
178 subValidation(SubscriberSharedPtr const& subscriber) = 0;
179
184 virtual void
185 unsubValidation(SubscriberSharedPtr const& subscriber) = 0;
186
191 virtual void
192 forwardValidation(boost::json::object const& validationJson) = 0;
193
198 virtual void
199 subTransactions(SubscriberSharedPtr const& subscriber) = 0;
200
205 virtual void
206 unsubTransactions(SubscriberSharedPtr const& subscriber) = 0;
207
214 virtual void
215 subAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
216
222 virtual void
223 unsubAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
224
231 virtual void
232 subBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
233
239 virtual void
240 unsubBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
241
247 virtual void
249 data::TransactionAndMetadata const& txMeta,
250 ripple::LedgerHeader const& lgrInfo
251 ) = 0;
252
258 virtual boost::json::object
259 report() const = 0;
260
265 virtual void
266 setNetworkID(uint32_t networkID) = 0;
267
273 virtual uint32_t
274 getNetworkID() const = 0;
275};
276
277} // namespace feed
Interface of subscription manager. A subscription manager is responsible for managing the subscriptio...
Definition SubscriptionManagerInterface.hpp:44
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:33
Represents a transaction and its metadata bundled together.
Definition Types.hpp:68