xrpld
Loading...
Searching...
No Matches
xrpl::SSLWSPeer< Handler > Class Template Referenceabstract

#include <SSLWSPeer.h>

Inheritance diagram for xrpl::SSLWSPeer< Handler >:
Collaboration diagram for xrpl::SSLWSPeer< Handler >:

Public Member Functions

template<class Body, class Headers>
 SSLWSPeer (Port const &port, Handler &handler, EndpointType remoteEndpoint, boost::beast::http::request< Body, Headers > &&request, std::unique_ptr< StreamType > &&streamPtr, beast::Journal journal)
void run () override
Port const & port () const override
HttpRequestType const & request () const override
boost::asio::ip::tcp::endpoint const & remoteEndpoint () const override
void send (std::shared_ptr< WSMsg > w) override
 Send a WebSockets message.
void close () override
virtual void close (boost::beast::websocket::close_reason const &reason)=0
void complete () override
 Indicate that the response is complete.
IOList & ios ()
 Return the IOList associated with the work.
T shared_from_this (T... args)
T weak_from_this (T... args)

Public Attributes

std::shared_ptr< void > appDefined

Protected Member Functions

SSLWSPeer< Handler > & impl ()
void onWsHandshake (ErrorCode const &ec)
void doWrite ()
void onWrite (ErrorCode const &ec)
void onWriteFin (ErrorCode const &ec)
void doRead ()
void onRead (ErrorCode const &ec)
void onClose (ErrorCode const &ec)
void startTimer ()
void cancelTimer ()
void onPing (ErrorCode const &ec)
void onPingPong (boost::beast::websocket::frame_type kind, std::string_view payload)
void onTimer (ErrorCode ec)
void fail (ErrorCode ec, String const &what)

Protected Attributes

Port const & port_
Handler & handler_
EndpointType remoteAddress_
beast::WrappedSink sink_
beast::Journal const j_
boost::asio::executor_work_guard< boost::asio::executor > work_
boost::asio::strand< boost::asio::executor > strand_

Private Types

using ClockType = std::chrono::system_clock
using ErrorCode = boost::system::error_code
using EndpointType = boost::asio::ip::tcp::endpoint
using SocketType = boost::beast::tcp_stream
using StreamType = boost::beast::ssl_stream<SocketType>
using WaitableTimer = boost::asio::basic_waitable_timer<ClockType>

Private Member Functions

void destroy ()

Private Attributes

std::unique_ptr< StreamType > streamPtr_
boost::beast::websocket::stream< StreamType & > ws_
HttpRequestType request_
boost::beast::multi_buffer rb_
boost::beast::multi_buffer wb_
std::list< std::shared_ptr< WSMsg > > wq_
bool doClose_
 The socket has been closed, or will close after the next write finishes.
boost::beast::websocket::close_reason cr_
WaitableTimer timer_
bool closeOnTimer_
bool pingActive_
boost::beast::websocket::ping_data payload_
ErrorCode ec_
std::function< void(boost::beast::websocket::frame_type, std::string_view)> controlCallback_
IOList * ios_

Friends

class BasePeer< Handler, SSLWSPeer >
class BaseWSPeer< Handler, SSLWSPeer >

Detailed Description

template<class Handler>
class xrpl::SSLWSPeer< Handler >

Definition at line 23 of file SSLWSPeer.h.

Member Typedef Documentation

◆ ClockType

template<class Handler>
using xrpl::SSLWSPeer< Handler >::ClockType = std::chrono::system_clock
private

Definition at line 29 of file SSLWSPeer.h.

◆ ErrorCode

template<class Handler>
using xrpl::SSLWSPeer< Handler >::ErrorCode = boost::system::error_code
private

Definition at line 30 of file SSLWSPeer.h.

◆ EndpointType

template<class Handler>
using xrpl::SSLWSPeer< Handler >::EndpointType = boost::asio::ip::tcp::endpoint
private

Definition at line 31 of file SSLWSPeer.h.

◆ SocketType

template<class Handler>
using xrpl::SSLWSPeer< Handler >::SocketType = boost::beast::tcp_stream
private

Definition at line 32 of file SSLWSPeer.h.

◆ StreamType

template<class Handler>
using xrpl::SSLWSPeer< Handler >::StreamType = boost::beast::ssl_stream<SocketType>
private

Definition at line 33 of file SSLWSPeer.h.

◆ WaitableTimer

template<class Handler>
using xrpl::SSLWSPeer< Handler >::WaitableTimer = boost::asio::basic_waitable_timer<ClockType>
private

Definition at line 34 of file SSLWSPeer.h.

Constructor & Destructor Documentation

◆ SSLWSPeer()

template<class Handler>
template<class Body, class Headers>
xrpl::SSLWSPeer< Handler >::SSLWSPeer ( Port const & port,
Handler & handler,
EndpointType remoteEndpoint,
boost::beast::http::request< Body, Headers > && request,
std::unique_ptr< StreamType > && streamPtr,
beast::Journal journal )

Definition at line 54 of file SSLWSPeer.h.

Member Function Documentation

◆ run()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::run ( )
overridevirtualinherited

Implements xrpl::WSSession.

Definition at line 80 of file BaseWSPeer.h.

◆ port()

Port const & xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::port ( ) const
nodiscardoverridevirtualinherited

Implements xrpl::WSSession.

Definition at line 87 of file BaseWSPeer.h.

◆ request()

HttpRequestType const & xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::request ( ) const
nodiscardoverridevirtualinherited

Implements xrpl::WSSession.

Definition at line 93 of file BaseWSPeer.h.

◆ remoteEndpoint()

boost::asio::ip::tcp::endpoint const & xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::remoteEndpoint ( ) const
nodiscardoverridevirtualinherited

Implements xrpl::WSSession.

Definition at line 99 of file BaseWSPeer.h.

◆ send()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::send ( std::shared_ptr< WSMsg > w)
overridevirtualinherited

Send a WebSockets message.

Implements xrpl::WSSession.

Definition at line 105 of file BaseWSPeer.h.

◆ close() [1/2]

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::close ( )
overridevirtualinherited

Reimplemented from xrpl::BasePeer< Handler, SSLWSPeer< Handler > >.

Definition at line 108 of file BaseWSPeer.h.

◆ close() [2/2]

virtual void xrpl::WSSession::close ( boost::beast::websocket::close_reason const & reason)
pure virtualinherited

◆ complete()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::complete ( )
overridevirtualinherited

Indicate that the response is complete.

The handler should call this when it has completed writing the response.

Implements xrpl::WSSession.

Definition at line 114 of file BaseWSPeer.h.

◆ impl()

SSLWSPeer< Handler > & xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::impl ( )
protectedinherited

Definition at line 118 of file BaseWSPeer.h.

◆ onWsHandshake()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onWsHandshake ( ErrorCode const & ec)
protectedinherited

Definition at line 124 of file BaseWSPeer.h.

◆ doWrite()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::doWrite ( )
protectedinherited

Definition at line 127 of file BaseWSPeer.h.

◆ onWrite()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onWrite ( ErrorCode const & ec)
protectedinherited

Definition at line 130 of file BaseWSPeer.h.

◆ onWriteFin()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onWriteFin ( ErrorCode const & ec)
protectedinherited

Definition at line 133 of file BaseWSPeer.h.

◆ doRead()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::doRead ( )
protectedinherited

Definition at line 136 of file BaseWSPeer.h.

◆ onRead()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onRead ( ErrorCode const & ec)
protectedinherited

Definition at line 139 of file BaseWSPeer.h.

◆ onClose()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onClose ( ErrorCode const & ec)
protectedinherited

Definition at line 142 of file BaseWSPeer.h.

◆ startTimer()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::startTimer ( )
protectedinherited

Definition at line 145 of file BaseWSPeer.h.

◆ cancelTimer()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::cancelTimer ( )
protectedinherited

Definition at line 148 of file BaseWSPeer.h.

◆ onPing()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onPing ( ErrorCode const & ec)
protectedinherited

Definition at line 151 of file BaseWSPeer.h.

◆ onPingPong()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onPingPong ( boost::beast::websocket::frame_type kind,
std::string_view payload )
protectedinherited

Definition at line 154 of file BaseWSPeer.h.

◆ onTimer()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::onTimer ( ErrorCode ec)
protectedinherited

Definition at line 157 of file BaseWSPeer.h.

◆ fail()

void xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::fail ( ErrorCode ec,
String const & what )
protectedinherited

Definition at line 161 of file BaseWSPeer.h.

◆ destroy()

void xrpl::IOList::Work::destroy ( )
privateinherited

Definition at line 25 of file io_list.h.

◆ ios()

Return the IOList associated with the work.

Requirements: The call to IOList::emplace to create the work has already returned.

Definition at line 44 of file io_list.h.

◆ BasePeer< Handler, SSLWSPeer >

template<class Handler>
friend class BasePeer< Handler, SSLWSPeer >
friend

Definition at line 54 of file SSLWSPeer.h.

◆ BaseWSPeer< Handler, SSLWSPeer >

template<class Handler>
friend class BaseWSPeer< Handler, SSLWSPeer >
friend

Definition at line 54 of file SSLWSPeer.h.

Member Data Documentation

◆ streamPtr_

template<class Handler>
std::unique_ptr<StreamType> xrpl::SSLWSPeer< Handler >::streamPtr_
private

Definition at line 36 of file SSLWSPeer.h.

◆ ws_

template<class Handler>
boost::beast::websocket::stream<StreamType&> xrpl::SSLWSPeer< Handler >::ws_
private

Definition at line 37 of file SSLWSPeer.h.

◆ request_

HttpRequestType xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::request_
privateinherited

Definition at line 50 of file BaseWSPeer.h.

◆ rb_

boost::beast::multi_buffer xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::rb_
privateinherited

Definition at line 51 of file BaseWSPeer.h.

◆ wb_

boost::beast::multi_buffer xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::wb_
privateinherited

Definition at line 52 of file BaseWSPeer.h.

◆ wq_

std::list<std::shared_ptr<WSMsg> > xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::wq_
privateinherited

Definition at line 53 of file BaseWSPeer.h.

◆ doClose_

bool xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::doClose_
privateinherited

The socket has been closed, or will close after the next write finishes.

Do not do any more writes, and don't try to close again.

Definition at line 59 of file BaseWSPeer.h.

◆ cr_

boost::beast::websocket::close_reason xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::cr_
privateinherited

Definition at line 60 of file BaseWSPeer.h.

◆ timer_

WaitableTimer xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::timer_
privateinherited

Definition at line 61 of file BaseWSPeer.h.

◆ closeOnTimer_

bool xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::closeOnTimer_
privateinherited

Definition at line 62 of file BaseWSPeer.h.

◆ pingActive_

bool xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::pingActive_
privateinherited

Definition at line 63 of file BaseWSPeer.h.

◆ payload_

boost::beast::websocket::ping_data xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::payload_
privateinherited

Definition at line 64 of file BaseWSPeer.h.

◆ ec_

ErrorCode xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::ec_
privateinherited

Definition at line 65 of file BaseWSPeer.h.

◆ controlCallback_

std::function<void(boost::beast::websocket::frame_type, std::string_view)> xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::controlCallback_
privateinherited

Definition at line 66 of file BaseWSPeer.h.

◆ port_

Port const& xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::port_
protectedinherited

Definition at line 28 of file BasePeer.h.

◆ handler_

Handler& xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::handler_
protectedinherited

Definition at line 29 of file BasePeer.h.

◆ remoteAddress_

EndpointType xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::remoteAddress_
protectedinherited

Definition at line 30 of file BasePeer.h.

◆ sink_

beast::WrappedSink xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::sink_
protectedinherited

Definition at line 31 of file BasePeer.h.

◆ j_

beast::Journal const xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::j_
protectedinherited

Definition at line 32 of file BasePeer.h.

◆ work_

boost::asio::executor_work_guard<boost::asio::executor> xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::work_
protectedinherited

Definition at line 34 of file BasePeer.h.

◆ strand_

boost::asio::strand<boost::asio::executor> xrpl::BasePeer< Handler, SSLWSPeer< Handler > >::strand_
protectedinherited

Definition at line 35 of file BasePeer.h.

◆ ios_

IOList* xrpl::IOList::Work::ios_
privateinherited

Definition at line 28 of file io_list.h.

◆ appDefined

Definition at line 90 of file WSSession.h.