xrpld
Loading...
Searching...
No Matches
xrpl::HTTPClientImp Class Reference
Inheritance diagram for xrpl::HTTPClientImp:
Collaboration diagram for xrpl::HTTPClientImp:

Classes

struct  Query

Public Member Functions

 HTTPClientImp (boost::asio::io_context &ioContext, unsigned short const port, std::size_t maxResponseSize, beast::Journal const &j)
void makeGet (std::string const &strPath, boost::asio::streambuf &sb, std::string const &strHost)
void request (bool bSSL, std::deque< std::string > deqSites, std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> build, std::chrono::seconds timeout, std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete)
void get (bool bSSL, std::deque< std::string > deqSites, std::string const &strPath, std::chrono::seconds timeout, std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete)
void httpsNext ()
void handleDeadline (boost::system::error_code const &ecResult)
void handleShutdown (boost::system::error_code const &ecResult)
void handleResolve (boost::system::error_code const &ecResult, boost::asio::ip::tcp::resolver::results_type result)
void handleConnect (boost::system::error_code const &ecResult)
void handleRequest (boost::system::error_code const &ecResult)
void handleWrite (boost::system::error_code const &ecResult, std::size_t bytesTransferred)
void handleHeader (boost::system::error_code const &ecResult, std::size_t bytesTransferred)
void handleData (boost::system::error_code const &ecResult, std::size_t bytesTransferred)
void invokeComplete (boost::system::error_code const &ecResult, int iStatus=0, std::string const &strData="")
shared_from_this (T... args)
weak_from_this (T... args)

Static Public Member Functions

static void initializeSSLContext (std::string const &sslVerifyDir, std::string const &sslVerifyFile, bool sslVerify, beast::Journal j)
static void cleanupSSLContext ()
 Destroys the global SSL context created by initializeSSLContext().
static void get (bool bSSL, boost::asio::io_context &ioContext, std::deque< std::string > deqSites, unsigned short const port, std::string const &strPath, std::size_t responseMax, std::chrono::seconds timeout, std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete, beast::Journal const &j)
static void get (bool bSSL, boost::asio::io_context &ioContext, std::string strSite, unsigned short const port, std::string const &strPath, std::size_t responseMax, std::chrono::seconds timeout, std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete, beast::Journal const &j)
static void request (bool bSSL, boost::asio::io_context &ioContext, std::string strSite, unsigned short const port, std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> build, std::size_t responseMax, std::chrono::seconds timeout, std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete, beast::Journal const &j)

Static Public Attributes

static constexpr auto kMaxClientHeaderBytes = kilobytes(32)

Private Types

using pointer = std::shared_ptr<HTTPClient>

Private Attributes

bool ssl_ {}
AutoSocket socket_
boost::asio::ip::tcp::resolver resolver_
std::shared_ptr< Queryquery_
boost::asio::streambuf request_
boost::asio::streambuf header_
boost::asio::streambuf response_
std::string body_
unsigned short const port_
std::size_t const maxResponseSize_
int status_ {}
std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> build_
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete_
boost::asio::basic_waitable_timer< std::chrono::steady_clockdeadline_
boost::system::error_code shutdown_
std::deque< std::stringdeqSites_
std::chrono::seconds timeout_ {}
beast::Journal j_

Detailed Description

Definition at line 60 of file libxrpl/net/HTTPClient.cpp.

Member Typedef Documentation

◆ pointer

Constructor & Destructor Documentation

◆ HTTPClientImp()

xrpl::HTTPClientImp::HTTPClientImp ( boost::asio::io_context & ioContext,
unsigned short const port,
std::size_t maxResponseSize,
beast::Journal const & j )

Definition at line 63 of file libxrpl/net/HTTPClient.cpp.

Member Function Documentation

◆ makeGet()

void xrpl::HTTPClientImp::makeGet ( std::string const & strPath,
boost::asio::streambuf & sb,
std::string const & strHost )

Definition at line 84 of file libxrpl/net/HTTPClient.cpp.

◆ request() [1/2]

void xrpl::HTTPClientImp::request ( bool bSSL,
std::deque< std::string > deqSites,
std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> build,
std::chrono::seconds timeout,
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete )

Definition at line 100 of file libxrpl/net/HTTPClient.cpp.

◆ get() [1/3]

void xrpl::HTTPClientImp::get ( bool bSSL,
std::deque< std::string > deqSites,
std::string const & strPath,
std::chrono::seconds timeout,
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete )

Definition at line 122 of file libxrpl/net/HTTPClient.cpp.

◆ httpsNext()

void xrpl::HTTPClientImp::httpsNext ( )

Definition at line 148 of file libxrpl/net/HTTPClient.cpp.

◆ handleDeadline()

void xrpl::HTTPClientImp::handleDeadline ( boost::system::error_code const & ecResult)

Definition at line 192 of file libxrpl/net/HTTPClient.cpp.

◆ handleShutdown()

void xrpl::HTTPClientImp::handleShutdown ( boost::system::error_code const & ecResult)

Definition at line 228 of file libxrpl/net/HTTPClient.cpp.

◆ handleResolve()

void xrpl::HTTPClientImp::handleResolve ( boost::system::error_code const & ecResult,
boost::asio::ip::tcp::resolver::results_type result )

Definition at line 237 of file libxrpl/net/HTTPClient.cpp.

◆ handleConnect()

void xrpl::HTTPClientImp::handleConnect ( boost::system::error_code const & ecResult)

Definition at line 270 of file libxrpl/net/HTTPClient.cpp.

◆ handleRequest()

void xrpl::HTTPClientImp::handleRequest ( boost::system::error_code const & ecResult)

Definition at line 314 of file libxrpl/net/HTTPClient.cpp.

◆ handleWrite()

void xrpl::HTTPClientImp::handleWrite ( boost::system::error_code const & ecResult,
std::size_t bytesTransferred )

Definition at line 341 of file libxrpl/net/HTTPClient.cpp.

◆ handleHeader()

void xrpl::HTTPClientImp::handleHeader ( boost::system::error_code const & ecResult,
std::size_t bytesTransferred )

Definition at line 367 of file libxrpl/net/HTTPClient.cpp.

◆ handleData()

void xrpl::HTTPClientImp::handleData ( boost::system::error_code const & ecResult,
std::size_t bytesTransferred )

Definition at line 433 of file libxrpl/net/HTTPClient.cpp.

◆ invokeComplete()

void xrpl::HTTPClientImp::invokeComplete ( boost::system::error_code const & ecResult,
int iStatus = 0,
std::string const & strData = "" )

Definition at line 462 of file libxrpl/net/HTTPClient.cpp.

◆ initializeSSLContext()

void xrpl::HTTPClient::initializeSSLContext ( std::string const & sslVerifyDir,
std::string const & sslVerifyFile,
bool sslVerify,
beast::Journal j )
staticinherited

Definition at line 39 of file libxrpl/net/HTTPClient.cpp.

◆ cleanupSSLContext()

void xrpl::HTTPClient::cleanupSSLContext ( )
staticinherited

Destroys the global SSL context created by initializeSSLContext().

This releases the underlying boost::asio::ssl::context and any associated OpenSSL resources. Must not be called while any HTTPClient requests are in flight.

Note
Currently only called from tests during teardown. In production, the SSL context lives for the lifetime of the process.

Definition at line 49 of file libxrpl/net/HTTPClient.cpp.

◆ get() [2/3]

void xrpl::HTTPClient::get ( bool bSSL,
boost::asio::io_context & ioContext,
std::deque< std::string > deqSites,
unsigned short const port,
std::string const & strPath,
std::size_t responseMax,
std::chrono::seconds timeout,
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete,
beast::Journal const & j )
staticinherited

Definition at line 541 of file libxrpl/net/HTTPClient.cpp.

◆ get() [3/3]

void xrpl::HTTPClient::get ( bool bSSL,
boost::asio::io_context & ioContext,
std::string strSite,
unsigned short const port,
std::string const & strPath,
std::size_t responseMax,
std::chrono::seconds timeout,
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete,
beast::Journal const & j )
staticinherited

Definition at line 559 of file libxrpl/net/HTTPClient.cpp.

◆ request() [2/2]

void xrpl::HTTPClient::request ( bool bSSL,
boost::asio::io_context & ioContext,
std::string strSite,
unsigned short const port,
std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> build,
std::size_t responseMax,
std::chrono::seconds timeout,
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> complete,
beast::Journal const & j )
staticinherited

Definition at line 579 of file libxrpl/net/HTTPClient.cpp.

Member Data Documentation

◆ ssl_

bool xrpl::HTTPClientImp::ssl_ {}
private

Definition at line 504 of file libxrpl/net/HTTPClient.cpp.

◆ socket_

AutoSocket xrpl::HTTPClientImp::socket_
private

Definition at line 505 of file libxrpl/net/HTTPClient.cpp.

◆ resolver_

boost::asio::ip::tcp::resolver xrpl::HTTPClientImp::resolver_
private

Definition at line 506 of file libxrpl/net/HTTPClient.cpp.

◆ query_

std::shared_ptr<Query> xrpl::HTTPClientImp::query_
private

Definition at line 514 of file libxrpl/net/HTTPClient.cpp.

◆ request_

boost::asio::streambuf xrpl::HTTPClientImp::request_
private

Definition at line 516 of file libxrpl/net/HTTPClient.cpp.

◆ header_

boost::asio::streambuf xrpl::HTTPClientImp::header_
private

Definition at line 517 of file libxrpl/net/HTTPClient.cpp.

◆ response_

boost::asio::streambuf xrpl::HTTPClientImp::response_
private

Definition at line 518 of file libxrpl/net/HTTPClient.cpp.

◆ body_

std::string xrpl::HTTPClientImp::body_
private

Definition at line 519 of file libxrpl/net/HTTPClient.cpp.

◆ port_

unsigned short const xrpl::HTTPClientImp::port_
private

Definition at line 520 of file libxrpl/net/HTTPClient.cpp.

◆ maxResponseSize_

std::size_t const xrpl::HTTPClientImp::maxResponseSize_
private

Definition at line 521 of file libxrpl/net/HTTPClient.cpp.

◆ status_

int xrpl::HTTPClientImp::status_ {}
private

Definition at line 522 of file libxrpl/net/HTTPClient.cpp.

◆ build_

std::function<void(boost::asio::streambuf& sb, std::string const& strHost)> xrpl::HTTPClientImp::build_
private

Definition at line 523 of file libxrpl/net/HTTPClient.cpp.

◆ complete_

std::function< bool(boost::system::error_code const& ecResult, int iStatus, std::string const& strData)> xrpl::HTTPClientImp::complete_
private

Definition at line 526 of file libxrpl/net/HTTPClient.cpp.

◆ deadline_

boost::asio::basic_waitable_timer<std::chrono::steady_clock> xrpl::HTTPClientImp::deadline_
private

Definition at line 528 of file libxrpl/net/HTTPClient.cpp.

◆ shutdown_

boost::system::error_code xrpl::HTTPClientImp::shutdown_
private

Definition at line 531 of file libxrpl/net/HTTPClient.cpp.

◆ deqSites_

std::deque<std::string> xrpl::HTTPClientImp::deqSites_
private

Definition at line 533 of file libxrpl/net/HTTPClient.cpp.

◆ timeout_

std::chrono::seconds xrpl::HTTPClientImp::timeout_ {}
private

Definition at line 534 of file libxrpl/net/HTTPClient.cpp.

◆ j_

beast::Journal xrpl::HTTPClientImp::j_
private

Definition at line 535 of file libxrpl/net/HTTPClient.cpp.

◆ kMaxClientHeaderBytes

auto xrpl::HTTPClient::kMaxClientHeaderBytes = kilobytes(32)
staticconstexprinherited

Definition at line 25 of file HTTPClient.h.