xrpld
Loading...
Searching...
No Matches
xrpl::ConnectAttempt Class Reference

Manages an outbound connection attempt. More...

#include <ConnectAttempt.h>

Inheritance diagram for xrpl::ConnectAttempt:
Collaboration diagram for xrpl::ConnectAttempt:

Public Member Functions

 ConnectAttempt (Application &app, boost::asio::io_context &ioContext, EndpointType remoteEndpoint, resource::Consumer usage, SharedContext const &context, Peer::ID id, std::shared_ptr< peer_finder::Slot > const &slot, beast::Journal journal, OverlayImpl &overlay)
 ~ConnectAttempt () override
void stop () override
void run ()
T shared_from_this (T... args)
T weak_from_this (T... args)

Protected Attributes

OverlayImpl & overlay_

Private Types

using ErrorCode = boost::system::error_code
using EndpointType = boost::asio::ip::tcp::endpoint
using RequestType = boost::beast::http::request<boost::beast::http::empty_body>
using ResponseType = boost::beast::http::response<boost::beast::http::dynamic_body>
using SocketType = boost::asio::ip::tcp::socket
using MiddleType = boost::beast::tcp_stream
using StreamType = boost::beast::ssl_stream<MiddleType>
using SharedContext = std::shared_ptr<boost::asio::ssl::context>

Private Member Functions

void close ()
void fail (std::string const &reason)
void fail (std::string const &name, ErrorCode ec)
void setTimer ()
void cancelTimer ()
void onTimer (ErrorCode ec)
void onConnect (ErrorCode ec)
void onHandshake (ErrorCode ec)
void onWrite (ErrorCode ec)
void onRead (ErrorCode ec)
void onShutdown (ErrorCode ec)
void processResponse ()

Static Private Member Functions

template<class = void>
static boost::asio::ip::tcp::endpoint parseEndpoint (std::string const &s, boost::system::error_code &ec)

Private Attributes

Application & app_
std::uint32_t const id_
beast::WrappedSink sink_
beast::Journal const journal_
EndpointType remoteEndpoint_
resource::Consumer usage_
boost::asio::strand< boost::asio::io_context::executor_type > strand_
boost::asio::basic_waitable_timer< std::chrono::steady_clock > timer_
std::unique_ptr< StreamType > streamPtr_
SocketType & socket_
StreamType & stream_
boost::beast::multi_buffer readBuf_
ResponseType response_
std::shared_ptr< peer_finder::Slot > slot_
RequestType req_

Detailed Description

Manages an outbound connection attempt.

Definition at line 25 of file ConnectAttempt.h.

Member Typedef Documentation

◆ ErrorCode

using xrpl::ConnectAttempt::ErrorCode = boost::system::error_code
private

Definition at line 29 of file ConnectAttempt.h.

◆ EndpointType

using xrpl::ConnectAttempt::EndpointType = boost::asio::ip::tcp::endpoint
private

Definition at line 30 of file ConnectAttempt.h.

◆ RequestType

using xrpl::ConnectAttempt::RequestType = boost::beast::http::request<boost::beast::http::empty_body>
private

Definition at line 31 of file ConnectAttempt.h.

◆ ResponseType

using xrpl::ConnectAttempt::ResponseType = boost::beast::http::response<boost::beast::http::dynamic_body>
private

Definition at line 32 of file ConnectAttempt.h.

◆ SocketType

using xrpl::ConnectAttempt::SocketType = boost::asio::ip::tcp::socket
private

Definition at line 34 of file ConnectAttempt.h.

◆ MiddleType

using xrpl::ConnectAttempt::MiddleType = boost::beast::tcp_stream
private

Definition at line 35 of file ConnectAttempt.h.

◆ StreamType

using xrpl::ConnectAttempt::StreamType = boost::beast::ssl_stream<MiddleType>
private

Definition at line 36 of file ConnectAttempt.h.

◆ SharedContext

using xrpl::ConnectAttempt::SharedContext = std::shared_ptr<boost::asio::ssl::context>
private

Definition at line 37 of file ConnectAttempt.h.

Constructor & Destructor Documentation

◆ ConnectAttempt()

xrpl::ConnectAttempt::ConnectAttempt ( Application & app,
boost::asio::io_context & ioContext,
EndpointType remoteEndpoint,
resource::Consumer usage,
SharedContext const & context,
Peer::ID id,
std::shared_ptr< peer_finder::Slot > const & slot,
beast::Journal journal,
OverlayImpl & overlay )

Definition at line 48 of file ConnectAttempt.cpp.

◆ ~ConnectAttempt()

xrpl::ConnectAttempt::~ConnectAttempt ( )
override

Definition at line 77 of file ConnectAttempt.cpp.

Member Function Documentation

◆ stop()

void xrpl::ConnectAttempt::stop ( )
overridevirtual

Implements xrpl::OverlayImpl::Child.

Definition at line 85 of file ConnectAttempt.cpp.

◆ run()

void xrpl::ConnectAttempt::run ( )

Definition at line 100 of file ConnectAttempt.cpp.

◆ close()

void xrpl::ConnectAttempt::close ( )
private

Definition at line 113 of file ConnectAttempt.cpp.

◆ fail() [1/2]

void xrpl::ConnectAttempt::fail ( std::string const & reason)
private

Definition at line 134 of file ConnectAttempt.cpp.

◆ fail() [2/2]

void xrpl::ConnectAttempt::fail ( std::string const & name,
ErrorCode ec )
private

Definition at line 141 of file ConnectAttempt.cpp.

◆ setTimer()

void xrpl::ConnectAttempt::setTimer ( )
private

Definition at line 148 of file ConnectAttempt.cpp.

◆ cancelTimer()

void xrpl::ConnectAttempt::cancelTimer ( )
private

Definition at line 166 of file ConnectAttempt.cpp.

◆ onTimer()

void xrpl::ConnectAttempt::onTimer ( ErrorCode ec)
private

Definition at line 179 of file ConnectAttempt.cpp.

◆ onConnect()

void xrpl::ConnectAttempt::onConnect ( ErrorCode ec)
private

Definition at line 199 of file ConnectAttempt.cpp.

◆ onHandshake()

void xrpl::ConnectAttempt::onHandshake ( ErrorCode ec)
private

Definition at line 233 of file ConnectAttempt.cpp.

◆ onWrite()

void xrpl::ConnectAttempt::onWrite ( ErrorCode ec)
private

Definition at line 294 of file ConnectAttempt.cpp.

◆ onRead()

void xrpl::ConnectAttempt::onRead ( ErrorCode ec)
private

Definition at line 320 of file ConnectAttempt.cpp.

◆ onShutdown()

void xrpl::ConnectAttempt::onShutdown ( ErrorCode ec)
private

Definition at line 351 of file ConnectAttempt.cpp.

◆ processResponse()

void xrpl::ConnectAttempt::processResponse ( )
private

Definition at line 371 of file ConnectAttempt.cpp.

◆ parseEndpoint()

template<class = void>
boost::asio::ip::tcp::endpoint xrpl::ConnectAttempt::parseEndpoint ( std::string const & s,
boost::system::error_code & ec )
staticprivate

Definition at line 103 of file ConnectAttempt.h.

Member Data Documentation

◆ app_

Application& xrpl::ConnectAttempt::app_
private

Definition at line 39 of file ConnectAttempt.h.

◆ id_

std::uint32_t const xrpl::ConnectAttempt::id_
private

Definition at line 40 of file ConnectAttempt.h.

◆ sink_

beast::WrappedSink xrpl::ConnectAttempt::sink_
private

Definition at line 41 of file ConnectAttempt.h.

◆ journal_

beast::Journal const xrpl::ConnectAttempt::journal_
private

Definition at line 42 of file ConnectAttempt.h.

◆ remoteEndpoint_

EndpointType xrpl::ConnectAttempt::remoteEndpoint_
private

Definition at line 43 of file ConnectAttempt.h.

◆ usage_

resource::Consumer xrpl::ConnectAttempt::usage_
private

Definition at line 44 of file ConnectAttempt.h.

◆ strand_

boost::asio::strand<boost::asio::io_context::executor_type> xrpl::ConnectAttempt::strand_
private

Definition at line 45 of file ConnectAttempt.h.

◆ timer_

boost::asio::basic_waitable_timer<std::chrono::steady_clock> xrpl::ConnectAttempt::timer_
private

Definition at line 46 of file ConnectAttempt.h.

◆ streamPtr_

std::unique_ptr<StreamType> xrpl::ConnectAttempt::streamPtr_
private

Definition at line 47 of file ConnectAttempt.h.

◆ socket_

SocketType& xrpl::ConnectAttempt::socket_
private

Definition at line 48 of file ConnectAttempt.h.

◆ stream_

StreamType& xrpl::ConnectAttempt::stream_
private

Definition at line 49 of file ConnectAttempt.h.

◆ readBuf_

boost::beast::multi_buffer xrpl::ConnectAttempt::readBuf_
private

Definition at line 50 of file ConnectAttempt.h.

◆ response_

ResponseType xrpl::ConnectAttempt::response_
private

Definition at line 51 of file ConnectAttempt.h.

◆ slot_

std::shared_ptr<peer_finder::Slot> xrpl::ConnectAttempt::slot_
private

Definition at line 52 of file ConnectAttempt.h.

◆ req_

RequestType xrpl::ConnectAttempt::req_
private

Definition at line 53 of file ConnectAttempt.h.

◆ overlay_

OverlayImpl& xrpl::OverlayImpl::Child::overlay_
protectedinherited

Definition at line 75 of file OverlayImpl.h.