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 150 of file libxrpl/net/HTTPClient.cpp.

◆ handleDeadline()

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

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

◆ handleShutdown()

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

Definition at line 230 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 239 of file libxrpl/net/HTTPClient.cpp.

◆ handleConnect()

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

Definition at line 271 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 342 of file libxrpl/net/HTTPClient.cpp.

◆ handleHeader()

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

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

◆ handleData()

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

Definition at line 436 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 465 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 544 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 562 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 582 of file libxrpl/net/HTTPClient.cpp.

Member Data Documentation

◆ ssl_

bool xrpl::HTTPClientImp::ssl_ {}
private

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

◆ socket_

AutoSocket xrpl::HTTPClientImp::socket_
private

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

◆ resolver_

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

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

◆ query_

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

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

◆ request_

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

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

◆ header_

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

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

◆ response_

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

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

◆ body_

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

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

◆ port_

unsigned short const xrpl::HTTPClientImp::port_
private

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

◆ maxResponseSize_

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

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

◆ status_

int xrpl::HTTPClientImp::status_ {}
private

Definition at line 525 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 526 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 529 of file libxrpl/net/HTTPClient.cpp.

◆ deadline_

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

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

◆ shutdown_

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

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

◆ deqSites_

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

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

◆ timeout_

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

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

◆ j_

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

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

◆ kMaxClientHeaderBytes

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

Definition at line 23 of file HTTPClient.h.