xrpld
Loading...
Searching...
No Matches
ResourceManager.h
1#pragma once
2
3#include <xrpl/beast/insight/Collector.h>
4#include <xrpl/beast/net/IPEndpoint.h>
5#include <xrpl/beast/utility/Journal.h>
6#include <xrpl/beast/utility/PropertyStream.h>
7#include <xrpl/json/json_value.h>
8#include <xrpl/resource/Consumer.h>
9#include <xrpl/resource/Gossip.h>
10
11#include <boost/utility/string_view.hpp>
12
13#include <memory>
14#include <string>
15#include <string_view>
16
17namespace xrpl::resource {
18
23{
24protected:
25 Manager();
26
27public:
28 ~Manager() override = 0;
29
34 virtual Consumer
36 virtual Consumer
38 beast::ip::Endpoint const& address,
39 bool const proxy,
41
45 virtual Consumer
47
51 virtual Consumer
53
57 virtual Gossip
59
63 virtual json::Value
64 getJson() = 0;
65 virtual json::Value
66 getJson(int threshold) = 0;
67
72 virtual void
73 importConsumers(std::string const& origin, Gossip const& gossip) = 0;
74};
75
76//------------------------------------------------------------------------------
77
80
81} // namespace xrpl::resource
A generic endpoint for log messages.
Definition Journal.h:44
Subclasses can be called to write to a stream and have children.
std::shared_ptr< Collector > ptr
Definition Collector.h:29
A version-independent IP address and port combination.
Definition IPEndpoint.h:24
Represents a JSON value.
Definition json_value.h:117
An endpoint that consumes resources.
Definition Consumer.h:20
virtual Consumer newOutboundEndpoint(beast::ip::Endpoint const &address)=0
Create a new endpoint keyed by outbound IP address and port.
virtual void importConsumers(std::string const &origin, Gossip const &gossip)=0
Import packaged consumer information.
virtual Consumer newInboundEndpoint(beast::ip::Endpoint const &address, bool const proxy, std::string_view forwardedFor)=0
virtual Consumer newInboundEndpoint(beast::ip::Endpoint const &address)=0
Create a new endpoint keyed by inbound IP address or the forwarded IP if proxied.
virtual json::Value getJson()=0
Extract consumer information for reporting.
virtual Consumer newUnlimitedEndpoint(beast::ip::Endpoint const &address)=0
Create a new unlimited endpoint keyed by forwarded IP.
virtual json::Value getJson(int threshold)=0
virtual Gossip exportConsumers()=0
Extract packaged consumer information for export.
std::unique_ptr< Manager > makeManager(beast::insight::Collector::ptr const &collector, beast::Journal journal)
std::string_view forwardedFor(http_request_type const &request)
Definition Role.cpp:251
Data format for exchanging consumption information across peers.
Definition Gossip.h:13