3#include <xrpld/app/main/Application.h>
4#include <xrpld/app/main/CollectorManager.h>
5#include <xrpld/rpc/detail/WSInfoSub.h>
7#include <xrpl/core/JobQueue.h>
8#include <xrpl/json/Output.h>
9#include <xrpl/server/Server.h>
10#include <xrpl/server/Session.h>
11#include <xrpl/server/WSSession.h>
13#include <boost/beast/core/tcp_stream.hpp>
14#include <boost/beast/ssl/ssl_stream.hpp>
15#include <boost/utility/string_view.hpp>
94 boost::asio::io_context&,
105 boost::asio::io_context& ioContext,
118 [[nodiscard]]
Setup const&
145 boost::asio::ip::tcp::endpoint
const& remoteAddress);
151 boost::asio::ip::tcp::endpoint
const& remoteAddress)
200 boost::asio::io_context&,
204 CollectorManager& cm);
A version-independent IP address and port combination.
A generic endpoint for log messages.
A metric for measuring an integral value.
A metric for reporting event timing.
Provides the beast::insight::Collector service.
A pool of threads to perform work.
Provides server functionality for clients.
Tracks load and resource consumption.
std::condition_variable condition_
ServerHandler(ServerHandlerCreator const &, Application &app, boost::asio::io_context &ioContext, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)
friend std::unique_ptr< ServerHandler > makeServerHandler(Application &app, boost::asio::io_context &, JobQueue &, NetworkOPs &, Resource::Manager &, CollectorManager &cm)
Handoff onHandoff(Session &session, std::unique_ptr< stream_type > &&bundle, http_request_type &&request, boost::asio::ip::tcp::endpoint const &remoteAddress)
beast::insight::Event rpcTime_
boost::beast::tcp_stream socket_type
Resource::Manager & resourceManager_
beast::insight::Event rpcSize_
json::Value processSession(std::shared_ptr< WSSession > const &session, std::shared_ptr< JobQueue::Coro > const &coro, json::Value const &jv)
void onClose(Session &session, boost::system::error_code const &)
Setup const & setup() const
Handoff onHandoff(Session &session, http_request_type &&request, boost::asio::ip::tcp::endpoint const &remoteAddress)
bool onAccept(Session &session, boost::asio::ip::tcp::endpoint endpoint)
void setup(Setup const &setup, beast::Journal journal)
Handoff statusResponse(http_request_type const &request) const
Endpoints const & endpoints() const
void processRequest(Port const &port, std::string const &request, beast::IP::Endpoint const &remoteIPAddress, Output const &, std::shared_ptr< JobQueue::Coro > coro, std::string_view forwardedFor, std::string_view user)
std::map< std::reference_wrapper< Port const >, int > count_
void onRequest(Session &session)
void onWSMessage(std::shared_ptr< WSSession > session, std::vector< boost::asio::const_buffer > const &buffers)
boost::beast::ssl_stream< socket_type > stream_type
std::unique_ptr< Server > server_
beast::insight::Counter rpcRequests_
Persistent state information for a connection session.
std::function< void(boost::beast::string_view const &)> Output
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
bool operator<(Slice const &lhs, Slice const &rhs) noexcept
std::unordered_map< std::string, boost::asio::ip::tcp::endpoint > Endpoints
ServerHandler::Setup setupServerHandler(Config const &config, std::ostream &log)
std::unique_ptr< ServerHandler > makeServerHandler(Application &app, boost::asio::io_context &ioContext, JobQueue &jobQueue, NetworkOPs &networkOPs, Resource::Manager &resourceManager, CollectorManager &cm)
std::string_view forwardedFor(http_request_type const &request)
boost::beast::http::request< boost::beast::http::dynamic_body > http_request_type
Used to indicate the result of a server connection handoff.
Configuration information for a Server listening port.
ServerHandlerCreator()=default
std::string adminPassword
boost::asio::ip::tcp::endpoint overlay
std::vector< Port > ports