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
98 virtual void
99 subProposedAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
100
106 virtual void
107 unsubProposedAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
108
113 virtual void
114 forwardProposedTransaction(boost::json::object const& receivedTxJson) = 0;
115
123 virtual boost::json::object
124 subLedger(boost::asio::yield_context yield, SubscriberSharedPtr const& subscriber) = 0;
125
130 virtual void
131 unsubLedger(SubscriberSharedPtr const& subscriber) = 0;
132
140 virtual void
142 ripple::LedgerHeader const& lgrInfo,
143 ripple::Fees const& fees,
144 std::string const& ledgerRange,
145 std::uint32_t txnCount
146 ) = 0;
147
152 virtual void
153 subManifest(SubscriberSharedPtr const& subscriber) = 0;
154
159 virtual void
160 unsubManifest(SubscriberSharedPtr const& subscriber) = 0;
161
166 virtual void
167 forwardManifest(boost::json::object const& manifestJson) = 0;
168
173 virtual void
174 subValidation(SubscriberSharedPtr const& subscriber) = 0;
175
180 virtual void
181 unsubValidation(SubscriberSharedPtr const& subscriber) = 0;
182
187 virtual void
188 forwardValidation(boost::json::object const& validationJson) = 0;
189
194 virtual void
195 subTransactions(SubscriberSharedPtr const& subscriber) = 0;
196
201 virtual void
202 unsubTransactions(SubscriberSharedPtr const& subscriber) = 0;
203
209 virtual void
210 subAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
211
217 virtual void
218 unsubAccount(ripple::AccountID const& account, SubscriberSharedPtr const& subscriber) = 0;
219
225 virtual void
226 subBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
227
233 virtual void
234 unsubBook(ripple::Book const& book, SubscriberSharedPtr const& subscriber) = 0;
235
241 virtual void
242 pubTransaction(data::TransactionAndMetadata const& txMeta, ripple::LedgerHeader const& lgrInfo) = 0;
243
249 virtual boost::json::object
250 report() const = 0;
251};
252
253} // 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 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 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