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

Classes

struct  msg
 

Public Member Functions

 WSClientImpl (Config const &cfg, bool v2, unsigned rpc_version, std::unordered_map< std::string, std::string > const &headers={})
 
 ~WSClientImpl () override
 
Json::Value invoke (std::string const &cmd, Json::Value const &params) override
 Submit a command synchronously.
 
std::optional< Json::ValuegetMsg (std::chrono::milliseconds const &timeout) override
 Retrieve a message.
 
std::optional< Json::ValuefindMsg (std::chrono::milliseconds const &timeout, std::function< bool(Json::Value const &)> pred) override
 Retrieve a message that meets the predicate criteria.
 
unsigned version () const override
 Get RPC 1.0 or RPC 2.0.
 

Private Types

using error_code = boost::system::error_code
 

Private Member Functions

void cleanup ()
 
void on_read_msg (error_code const &ec)
 
void on_read_done ()
 

Static Private Member Functions

static boost::asio::ip::tcp::endpoint getEndpoint (BasicConfig const &cfg, bool v2)
 
template<class ConstBuffers >
static std::string buffer_string (ConstBuffers const &b)
 

Private Attributes

boost::asio::io_context ios_
 
std::optional< boost::asio::executor_work_guard< boost::asio::io_context::executor_type > > work_
 
boost::asio::strand< boost::asio::io_context::executor_type > strand_
 
std::thread thread_
 
boost::asio::ip::tcp::socket stream_
 
boost::beast::websocket::stream< boost::asio::ip::tcp::socket & > ws_
 
boost::beast::multi_buffer rb_
 
bool peerClosed_ = false
 
bool b0_ = false
 
std::mutex m0_
 
std::condition_variable cv0_
 
std::mutex m_
 
std::condition_variable cv_
 
std::list< std::shared_ptr< msg > > msgs_
 
unsigned rpc_version_
 

Detailed Description

Definition at line 22 of file WSClient.cpp.

Member Typedef Documentation

◆ error_code

using ripple::test::WSClientImpl::error_code = boost::system::error_code
private

Definition at line 24 of file WSClient.cpp.

Constructor & Destructor Documentation

◆ WSClientImpl()

ripple::test::WSClientImpl::WSClientImpl ( Config const &  cfg,
bool  v2,
unsigned  rpc_version,
std::unordered_map< std::string, std::string > const &  headers = {} 
)

Definition at line 126 of file WSClient.cpp.

◆ ~WSClientImpl()

ripple::test::WSClientImpl::~WSClientImpl ( )
override

Definition at line 166 of file WSClient.cpp.

Member Function Documentation

◆ getEndpoint()

static boost::asio::ip::tcp::endpoint ripple::test::WSClientImpl::getEndpoint ( BasicConfig const &  cfg,
bool  v2 
)
staticprivate

Definition at line 36 of file WSClient.cpp.

◆ buffer_string()

template<class ConstBuffers >
static std::string ripple::test::WSClientImpl::buffer_string ( ConstBuffers const &  b)
staticprivate

Definition at line 66 of file WSClient.cpp.

◆ cleanup()

void ripple::test::WSClientImpl::cleanup ( )
private

Definition at line 101 of file WSClient.cpp.

◆ invoke()

Json::Value ripple::test::WSClientImpl::invoke ( std::string const &  cmd,
Json::Value const &  params 
)
overridevirtual

Submit a command synchronously.

The arguments to the function and the returned JSON are in a normalized format, the same whether the client is using the JSON-RPC over HTTP/S or WebSocket transport.

Parameters
cmdThe command to execute
paramsJson::Value of null or object type with zero or more key/value pairs.
Returns
The server response in normalized format.

Implements ripple::test::AbstractClient.

Definition at line 172 of file WSClient.cpp.

◆ getMsg()

std::optional< Json::Value > ripple::test::WSClientImpl::getMsg ( std::chrono::milliseconds const &  timeout)
overridevirtual

Retrieve a message.

Implements ripple::test::WSClient.

Definition at line 218 of file WSClient.cpp.

◆ findMsg()

std::optional< Json::Value > ripple::test::WSClientImpl::findMsg ( std::chrono::milliseconds const &  timeout,
std::function< bool(Json::Value const &)>  pred 
)
overridevirtual

Retrieve a message that meets the predicate criteria.

Implements ripple::test::WSClient.

Definition at line 232 of file WSClient.cpp.

◆ version()

unsigned ripple::test::WSClientImpl::version ( ) const
overridevirtual

Get RPC 1.0 or RPC 2.0.

Implements ripple::test::AbstractClient.

Definition at line 259 of file WSClient.cpp.

◆ on_read_msg()

void ripple::test::WSClientImpl::on_read_msg ( error_code const &  ec)
private

Definition at line 266 of file WSClient.cpp.

◆ on_read_done()

void ripple::test::WSClientImpl::on_read_done ( )
private

Definition at line 295 of file WSClient.cpp.

Member Data Documentation

◆ ios_

boost::asio::io_context ripple::test::WSClientImpl::ios_
private

Definition at line 76 of file WSClient.cpp.

◆ work_

std::optional<boost::asio::executor_work_guard< boost::asio::io_context::executor_type> > ripple::test::WSClientImpl::work_
private

Definition at line 79 of file WSClient.cpp.

◆ strand_

boost::asio::strand<boost::asio::io_context::executor_type> ripple::test::WSClientImpl::strand_
private

Definition at line 80 of file WSClient.cpp.

◆ thread_

std::thread ripple::test::WSClientImpl::thread_
private

Definition at line 81 of file WSClient.cpp.

◆ stream_

boost::asio::ip::tcp::socket ripple::test::WSClientImpl::stream_
private

Definition at line 82 of file WSClient.cpp.

◆ ws_

boost::beast::websocket::stream<boost::asio::ip::tcp::socket&> ripple::test::WSClientImpl::ws_
private

Definition at line 83 of file WSClient.cpp.

◆ rb_

boost::beast::multi_buffer ripple::test::WSClientImpl::rb_
private

Definition at line 84 of file WSClient.cpp.

◆ peerClosed_

bool ripple::test::WSClientImpl::peerClosed_ = false
private

Definition at line 86 of file WSClient.cpp.

◆ b0_

bool ripple::test::WSClientImpl::b0_ = false
private

Definition at line 89 of file WSClient.cpp.

◆ m0_

std::mutex ripple::test::WSClientImpl::m0_
private

Definition at line 90 of file WSClient.cpp.

◆ cv0_

std::condition_variable ripple::test::WSClientImpl::cv0_
private

Definition at line 91 of file WSClient.cpp.

◆ m_

std::mutex ripple::test::WSClientImpl::m_
private

Definition at line 94 of file WSClient.cpp.

◆ cv_

std::condition_variable ripple::test::WSClientImpl::cv_
private

Definition at line 95 of file WSClient.cpp.

◆ msgs_

std::list<std::shared_ptr<msg> > ripple::test::WSClientImpl::msgs_
private

Definition at line 96 of file WSClient.cpp.

◆ rpc_version_

unsigned ripple::test::WSClientImpl::rpc_version_
private

Definition at line 98 of file WSClient.cpp.