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, endpoint_type remoteEndpoint, Resource::Consumer usage, shared_context const &context, Peer::id_t id, std::shared_ptr< PeerFinder::Slot > const &slot, beast::Journal journal, OverlayImpl &overlay)
 ~ConnectAttempt () override
void stop () override
void run ()
shared_from_this (T... args)
weak_from_this (T... args)

Protected Attributes

OverlayImploverlay_

Private Types

using error_code = boost::system::error_code
using endpoint_type = boost::asio::ip::tcp::endpoint
using request_type = boost::beast::http::request<boost::beast::http::empty_body>
using response_type = boost::beast::http::response<boost::beast::http::dynamic_body>
using socket_type = boost::asio::ip::tcp::socket
using middle_type = boost::beast::tcp_stream
using stream_type = boost::beast::ssl_stream<middle_type>
using shared_context = std::shared_ptr<boost::asio::ssl::context>

Private Member Functions

void close ()
void fail (std::string const &reason)
void fail (std::string const &name, error_code ec)
void setTimer ()
void cancelTimer ()
void onTimer (error_code ec)
void onConnect (error_code ec)
void onHandshake (error_code ec)
void onWrite (error_code ec)
void onRead (error_code ec)
void onShutdown (error_code 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

Applicationapp_
std::uint32_t const id_
beast::WrappedSink sink_
beast::Journal const journal_
endpoint_type remoteEndpoint_
Resource::Consumer usage_
boost::asio::strand< boost::asio::io_context::executor_type > strand_
boost::asio::basic_waitable_timer< std::chrono::steady_clocktimer_
std::unique_ptr< stream_typestreamPtr_
socket_typesocket_
stream_typestream_
boost::beast::multi_buffer readBuf_
response_type response_
std::shared_ptr< PeerFinder::Slotslot_
request_type req_

Detailed Description

Manages an outbound connection attempt.

Definition at line 11 of file ConnectAttempt.h.

Member Typedef Documentation

◆ error_code

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

Definition at line 15 of file ConnectAttempt.h.

◆ endpoint_type

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

Definition at line 16 of file ConnectAttempt.h.

◆ request_type

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

Definition at line 17 of file ConnectAttempt.h.

◆ response_type

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

Definition at line 18 of file ConnectAttempt.h.

◆ socket_type

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

Definition at line 20 of file ConnectAttempt.h.

◆ middle_type

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

Definition at line 21 of file ConnectAttempt.h.

◆ stream_type

using xrpl::ConnectAttempt::stream_type = boost::beast::ssl_stream<middle_type>
private

Definition at line 22 of file ConnectAttempt.h.

◆ shared_context

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

Definition at line 23 of file ConnectAttempt.h.

Constructor & Destructor Documentation

◆ ConnectAttempt()

xrpl::ConnectAttempt::ConnectAttempt ( Application & app,
boost::asio::io_context & ioContext,
endpoint_type remoteEndpoint,
Resource::Consumer usage,
shared_context const & context,
Peer::id_t id,
std::shared_ptr< PeerFinder::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 114 of file ConnectAttempt.cpp.

◆ fail() [1/2]

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

Definition at line 135 of file ConnectAttempt.cpp.

◆ fail() [2/2]

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

Definition at line 142 of file ConnectAttempt.cpp.

◆ setTimer()

void xrpl::ConnectAttempt::setTimer ( )
private

Definition at line 149 of file ConnectAttempt.cpp.

◆ cancelTimer()

void xrpl::ConnectAttempt::cancelTimer ( )
private

Definition at line 168 of file ConnectAttempt.cpp.

◆ onTimer()

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

Definition at line 181 of file ConnectAttempt.cpp.

◆ onConnect()

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

Definition at line 201 of file ConnectAttempt.cpp.

◆ onHandshake()

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

Definition at line 236 of file ConnectAttempt.cpp.

◆ onWrite()

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

Definition at line 297 of file ConnectAttempt.cpp.

◆ onRead()

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

Definition at line 323 of file ConnectAttempt.cpp.

◆ onShutdown()

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

Definition at line 355 of file ConnectAttempt.cpp.

◆ processResponse()

void xrpl::ConnectAttempt::processResponse ( )
private

Definition at line 375 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 89 of file ConnectAttempt.h.

Member Data Documentation

◆ app_

Application& xrpl::ConnectAttempt::app_
private

Definition at line 25 of file ConnectAttempt.h.

◆ id_

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

Definition at line 26 of file ConnectAttempt.h.

◆ sink_

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

Definition at line 27 of file ConnectAttempt.h.

◆ journal_

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

Definition at line 28 of file ConnectAttempt.h.

◆ remoteEndpoint_

endpoint_type xrpl::ConnectAttempt::remoteEndpoint_
private

Definition at line 29 of file ConnectAttempt.h.

◆ usage_

Resource::Consumer xrpl::ConnectAttempt::usage_
private

Definition at line 30 of file ConnectAttempt.h.

◆ strand_

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

Definition at line 31 of file ConnectAttempt.h.

◆ timer_

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

Definition at line 32 of file ConnectAttempt.h.

◆ streamPtr_

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

Definition at line 33 of file ConnectAttempt.h.

◆ socket_

socket_type& xrpl::ConnectAttempt::socket_
private

Definition at line 34 of file ConnectAttempt.h.

◆ stream_

stream_type& xrpl::ConnectAttempt::stream_
private

Definition at line 35 of file ConnectAttempt.h.

◆ readBuf_

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

Definition at line 36 of file ConnectAttempt.h.

◆ response_

response_type xrpl::ConnectAttempt::response_
private

Definition at line 37 of file ConnectAttempt.h.

◆ slot_

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

Definition at line 38 of file ConnectAttempt.h.

◆ req_

request_type xrpl::ConnectAttempt::req_
private

Definition at line 39 of file ConnectAttempt.h.

◆ overlay_

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

Definition at line 48 of file OverlayImpl.h.