Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
Unsubscribe.hpp
1#pragma once
2
3#include "feed/SubscriptionManagerInterface.hpp"
4#include "feed/Types.hpp"
5#include "rpc/common/Types.hpp"
6
7#include <rpcspec/HandlerFor.hpp>
8#include <rpcspec/handlers/unsubscribe/Types.hpp>
9#include <xrpl/protocol/AccountID.h>
10
11#include <expected>
12#include <memory>
13#include <vector>
14
15namespace rpc {
16
24
25class UnsubscribeHandler : public rpc::spec::HandlerFor<rpc::spec::handlers::unsubscribe::Input> {
26 std::shared_ptr<feed::SubscriptionManagerInterface> subscriptions_;
27
28public:
32 using OrderBook = rpc::spec::handlers::unsubscribe::OrderBook;
33
37 using StreamType = rpc::spec::handlers::unsubscribe::StreamType;
38
39 using Output = VoidOutput;
40 using Result = HandlerReturnType<Output>;
41
47 UnsubscribeHandler(std::shared_ptr<feed::SubscriptionManagerInterface> const& subscriptions);
48
56 [[nodiscard]] Result
57 process(Input const& input, Context const& ctx) const;
58
59private:
60 void
61 unsubscribeFromStreams(
62 std::vector<StreamType> const& streams,
63 feed::SubscriberSharedPtr const& session
64 ) const;
65
66 void
67 unsubscribeFromAccounts(
68 std::vector<xrpl::AccountID> const& accounts,
69 feed::SubscriberSharedPtr const& session
70 ) const;
71
72 void
73 unsubscribeFromProposedAccounts(
74 std::vector<xrpl::AccountID> const& accountsProposed,
75 feed::SubscriberSharedPtr const& session
76 ) const;
77
78 void
79 unsubscribeFromBooks(
80 std::vector<OrderBook> const& books,
81 feed::SubscriberSharedPtr const& session
82 ) const;
83};
84
85} // namespace rpc
rpc::spec::handlers::unsubscribe::OrderBook OrderBook
A struct to hold one order book.
Definition Unsubscribe.hpp:32
UnsubscribeHandler(std::shared_ptr< feed::SubscriptionManagerInterface > const &subscriptions)
Construct a new BaseUnsubscribeHandler object.
Definition Unsubscribe.cpp:17
Result process(Input const &input, Context const &ctx) const
Process the Unsubscribe command.
Definition Unsubscribe.cpp:25
rpc::spec::handlers::unsubscribe::StreamType StreamType
A subscribable stream type.
Definition Unsubscribe.hpp:37
This namespace contains all the RPC logic and handlers.
Definition AMMHelpers.cpp:17
std::expected< OutputType, Status > HandlerReturnType
Return type for each individual handler.
Definition Types.hpp:61
Context of an RPC call.
Definition Types.hpp:98
An empty type used as Output for handlers than don't actually produce output.
Definition Types.hpp:93