rippled
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Attributes | List of all members
xrpl::HTTPClientImp Class Reference
Inheritance diagram for xrpl::HTTPClientImp:
Inheritance graph
[legend]
Collaboration diagram for xrpl::HTTPClientImp:
Collaboration graph
[legend]

Classes

struct  Query
 

Public Member Functions

 HTTPClientImp (boost::asio::io_context &io_context, unsigned short const port, std::size_t maxResponseSize, beast::Journal &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 bytes_transferred)
 
void handleHeader (boost::system::error_code const &ecResult, std::size_t bytes_transferred)
 
void handleData (boost::system::error_code const &ecResult, std::size_t bytes_transferred)
 
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 &io_context, 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 &j)
 
static void get (bool bSSL, boost::asio::io_context &io_context, 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 &j)
 
static void request (bool bSSL, boost::asio::io_context &io_context, 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 &j)
 

Static Public Attributes

static constexpr auto maxClientHeaderBytes = kilobytes(32)
 

Private Types

using pointer = std::shared_ptr< HTTPClient >
 

Private Attributes

bool mSSL {}
 
AutoSocket mSocket
 
boost::asio::ip::tcp::resolver mResolver
 
std::shared_ptr< QuerymQuery
 
boost::asio::streambuf mRequest
 
boost::asio::streambuf mHeader
 
boost::asio::streambuf mResponse
 
std::string mBody
 
unsigned short const mPort
 
std::size_t const maxResponseSize_
 
int mStatus {}
 
std::function< void(boost::asio::streambuf &sb, std::string const &strHost)> mBuild
 
std::function< bool(boost::system::error_code const &ecResult, int iStatus, std::string const &strData)> mComplete
 
boost::asio::basic_waitable_timer< std::chrono::steady_clockmDeadline
 
boost::system::error_code mShutdown
 
std::deque< std::stringmDeqSites
 
std::chrono::seconds mTimeout {}
 
beast::Journal j_
 

Detailed Description

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

Member Typedef Documentation

◆ pointer

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

Constructor & Destructor Documentation

◆ HTTPClientImp()

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

Definition at line 44 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 63 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 79 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 101 of file libxrpl/net/HTTPClient.cpp.

◆ httpsNext()

void xrpl::HTTPClientImp::httpsNext ( )

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

◆ handleDeadline()

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

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

◆ handleShutdown()

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

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

◆ handleConnect()

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

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

◆ handleRequest()

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

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

◆ handleWrite()

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

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

◆ handleHeader()

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

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

◆ handleData()

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

Definition at line 411 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 440 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 20 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 30 of file libxrpl/net/HTTPClient.cpp.

◆ get() [2/3]

void xrpl::HTTPClient::get ( bool  bSSL,
boost::asio::io_context &  io_context,
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 j 
)
staticinherited

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

◆ get() [3/3]

void xrpl::HTTPClient::get ( bool  bSSL,
boost::asio::io_context &  io_context,
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 j 
)
staticinherited

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

◆ request() [2/2]

void xrpl::HTTPClient::request ( bool  bSSL,
boost::asio::io_context &  io_context,
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 j 
)
staticinherited

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

Member Data Documentation

◆ mSSL

bool xrpl::HTTPClientImp::mSSL {}
private

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

◆ mSocket

AutoSocket xrpl::HTTPClientImp::mSocket
private

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

◆ mResolver

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

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

◆ mQuery

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

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

◆ mRequest

boost::asio::streambuf xrpl::HTTPClientImp::mRequest
private

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

◆ mHeader

boost::asio::streambuf xrpl::HTTPClientImp::mHeader
private

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

◆ mResponse

boost::asio::streambuf xrpl::HTTPClientImp::mResponse
private

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

◆ mBody

std::string xrpl::HTTPClientImp::mBody
private

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

◆ mPort

unsigned short const xrpl::HTTPClientImp::mPort
private

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

◆ maxResponseSize_

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

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

◆ mStatus

int xrpl::HTTPClientImp::mStatus {}
private

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

◆ mBuild

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

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

◆ mComplete

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

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

◆ mDeadline

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

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

◆ mShutdown

boost::system::error_code xrpl::HTTPClientImp::mShutdown
private

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

◆ mDeqSites

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

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

◆ mTimeout

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

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

◆ j_

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

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

◆ maxClientHeaderBytes

constexpr auto xrpl::HTTPClient::maxClientHeaderBytes = kilobytes(32)
staticconstexprinherited

Definition at line 23 of file HTTPClient.h.