1#ifndef XRPL_RESOURCE_MANAGER_H_INCLUDED 
    2#define XRPL_RESOURCE_MANAGER_H_INCLUDED 
    4#include <xrpl/beast/insight/Collector.h> 
    5#include <xrpl/beast/net/IPEndpoint.h> 
    6#include <xrpl/beast/utility/Journal.h> 
    7#include <xrpl/beast/utility/PropertyStream.h> 
    8#include <xrpl/json/json_value.h> 
    9#include <xrpl/resource/Consumer.h> 
   10#include <xrpl/resource/Gossip.h> 
   12#include <boost/utility/string_view.hpp> 
A version-independent IP address and port combination.
 
A generic endpoint for log messages.
 
Subclasses can be called to write to a stream and have children.
 
An endpoint that consumes resources.
 
Tracks load and resource consumption.
 
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 Gossip exportConsumers()=0
Extract packaged consumer information for export.
 
virtual Consumer newInboundEndpoint(beast::IP::Endpoint const &address, bool const proxy, std::string_view forwardedFor)=0
 
virtual Consumer newUnlimitedEndpoint(beast::IP::Endpoint const &address)=0
Create a new unlimited endpoint keyed by forwarded IP.
 
virtual void importConsumers(std::string const &origin, Gossip const &gossip)=0
Import packaged consumer information.
 
virtual Json::Value getJson(int threshold)=0
 
virtual Consumer newOutboundEndpoint(beast::IP::Endpoint const &address)=0
Create a new endpoint keyed by outbound IP address and port.
 
std::unique_ptr< Manager > make_Manager(beast::insight::Collector::ptr const &collector, beast::Journal journal)
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
std::string_view forwardedFor(http_request_type const &request)
 
Data format for exchanging consumption information across peers.