rippled
Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ripple::ConnectAttempt Class Reference

Manages an outbound connection attempt. More...

Inheritance diagram for ripple::ConnectAttempt:
Inheritance graph
[legend]
Collaboration diagram for ripple::ConnectAttempt:
Collaboration graph
[legend]

Public Member Functions

 ConnectAttempt (Application &app, boost::asio::io_service &io_service, endpoint_type const &remote_endpoint, Resource::Consumer usage, shared_context const &context, std::uint32_t id, std::shared_ptr< PeerFinder::Slot > const &slot, beast::Journal journal, OverlayImpl &overlay)
 
 ~ConnectAttempt ()
 
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 parse_endpoint (std::string const &s, boost::system::error_code &ec)
 

Private Attributes

Applicationapp_
 
const std::uint32_t id_
 
beast::WrappedSink sink_
 
const beast::Journal journal_
 
endpoint_type remote_endpoint_
 
Resource::Consumer usage_
 
boost::asio::io_service::strand strand_
 
boost::asio::basic_waitable_timer< std::chrono::steady_clocktimer_
 
std::unique_ptr< stream_typestream_ptr_
 
socket_typesocket_
 
stream_typestream_
 
boost::beast::multi_buffer read_buf_
 
response_type response_
 
std::shared_ptr< PeerFinder::Slotslot_
 
request_type req_
 

Detailed Description

Manages an outbound connection attempt.

Definition at line 29 of file ConnectAttempt.h.

Member Typedef Documentation

◆ error_code

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

Definition at line 33 of file ConnectAttempt.h.

◆ endpoint_type

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

Definition at line 35 of file ConnectAttempt.h.

◆ request_type

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

Definition at line 38 of file ConnectAttempt.h.

◆ response_type

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

Definition at line 41 of file ConnectAttempt.h.

◆ socket_type

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

Definition at line 43 of file ConnectAttempt.h.

◆ middle_type

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

Definition at line 44 of file ConnectAttempt.h.

◆ stream_type

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

Definition at line 45 of file ConnectAttempt.h.

◆ shared_context

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

Definition at line 46 of file ConnectAttempt.h.

Constructor & Destructor Documentation

◆ ConnectAttempt()

ripple::ConnectAttempt::ConnectAttempt ( Application app,
boost::asio::io_service &  io_service,
endpoint_type const &  remote_endpoint,
Resource::Consumer  usage,
shared_context const &  context,
std::uint32_t  id,
std::shared_ptr< PeerFinder::Slot > const &  slot,
beast::Journal  journal,
OverlayImpl overlay 
)

Definition at line 28 of file ConnectAttempt.cpp.

◆ ~ConnectAttempt()

ripple::ConnectAttempt::~ConnectAttempt ( )

Definition at line 57 of file ConnectAttempt.cpp.

Member Function Documentation

◆ stop()

void ripple::ConnectAttempt::stop ( )
overridevirtual

Implements ripple::OverlayImpl::Child.

Definition at line 65 of file ConnectAttempt.cpp.

◆ run()

void ripple::ConnectAttempt::run ( )

Definition at line 78 of file ConnectAttempt.cpp.

◆ close()

void ripple::ConnectAttempt::close ( )
private

Definition at line 91 of file ConnectAttempt.cpp.

◆ fail() [1/2]

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

Definition at line 104 of file ConnectAttempt.cpp.

◆ fail() [2/2]

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

Definition at line 111 of file ConnectAttempt.cpp.

◆ setTimer()

void ripple::ConnectAttempt::setTimer ( )
private

Definition at line 118 of file ConnectAttempt.cpp.

◆ cancelTimer()

void ripple::ConnectAttempt::cancelTimer ( )
private

Definition at line 133 of file ConnectAttempt.cpp.

◆ onTimer()

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

Definition at line 140 of file ConnectAttempt.cpp.

◆ onConnect()

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

Definition at line 156 of file ConnectAttempt.cpp.

◆ onHandshake()

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

Definition at line 182 of file ConnectAttempt.cpp.

◆ onWrite()

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

Definition at line 230 of file ConnectAttempt.cpp.

◆ onRead()

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

Definition at line 250 of file ConnectAttempt.cpp.

◆ onShutdown()

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

Definition at line 273 of file ConnectAttempt.cpp.

◆ processResponse()

void ripple::ConnectAttempt::processResponse ( )
private

Definition at line 289 of file ConnectAttempt.cpp.

◆ parse_endpoint()

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

Definition at line 112 of file ConnectAttempt.h.

Member Data Documentation

◆ app_

Application& ripple::ConnectAttempt::app_
private

Definition at line 48 of file ConnectAttempt.h.

◆ id_

const std::uint32_t ripple::ConnectAttempt::id_
private

Definition at line 49 of file ConnectAttempt.h.

◆ sink_

beast::WrappedSink ripple::ConnectAttempt::sink_
private

Definition at line 50 of file ConnectAttempt.h.

◆ journal_

const beast::Journal ripple::ConnectAttempt::journal_
private

Definition at line 51 of file ConnectAttempt.h.

◆ remote_endpoint_

endpoint_type ripple::ConnectAttempt::remote_endpoint_
private

Definition at line 52 of file ConnectAttempt.h.

◆ usage_

Resource::Consumer ripple::ConnectAttempt::usage_
private

Definition at line 53 of file ConnectAttempt.h.

◆ strand_

boost::asio::io_service::strand ripple::ConnectAttempt::strand_
private

Definition at line 54 of file ConnectAttempt.h.

◆ timer_

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

Definition at line 55 of file ConnectAttempt.h.

◆ stream_ptr_

std::unique_ptr<stream_type> ripple::ConnectAttempt::stream_ptr_
private

Definition at line 56 of file ConnectAttempt.h.

◆ socket_

socket_type& ripple::ConnectAttempt::socket_
private

Definition at line 57 of file ConnectAttempt.h.

◆ stream_

stream_type& ripple::ConnectAttempt::stream_
private

Definition at line 58 of file ConnectAttempt.h.

◆ read_buf_

boost::beast::multi_buffer ripple::ConnectAttempt::read_buf_
private

Definition at line 59 of file ConnectAttempt.h.

◆ response_

response_type ripple::ConnectAttempt::response_
private

Definition at line 60 of file ConnectAttempt.h.

◆ slot_

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

Definition at line 61 of file ConnectAttempt.h.

◆ req_

request_type ripple::ConnectAttempt::req_
private

Definition at line 62 of file ConnectAttempt.h.

◆ overlay_

OverlayImpl& ripple::OverlayImpl::Child::overlay_
protectedinherited

Definition at line 64 of file OverlayImpl.h.