rippled
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. More...
 
std::optional< Json::ValuegetMsg (std::chrono::milliseconds const &timeout) override
 Retrieve a message. More...
 
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. More...
 
unsigned version () const override
 Get RPC 1.0 or RPC 2.0. More...
 

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_service ios_
 
std::optional< boost::asio::io_service::work > work_
 
boost::asio::io_service::strand 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 40 of file WSClient.cpp.

Member Typedef Documentation

◆ error_code

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

Definition at line 42 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 128 of file WSClient.cpp.

◆ ~WSClientImpl()

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

Definition at line 164 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 54 of file WSClient.cpp.

◆ buffer_string()

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

Definition at line 80 of file WSClient.cpp.

◆ cleanup()

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

Definition at line 113 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 170 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 216 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 230 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 257 of file WSClient.cpp.

◆ on_read_msg()

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

Definition at line 264 of file WSClient.cpp.

◆ on_read_done()

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

Definition at line 291 of file WSClient.cpp.

Member Data Documentation

◆ ios_

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

Definition at line 90 of file WSClient.cpp.

◆ work_

std::optional<boost::asio::io_service::work> ripple::test::WSClientImpl::work_
private

Definition at line 91 of file WSClient.cpp.

◆ strand_

boost::asio::io_service::strand ripple::test::WSClientImpl::strand_
private

Definition at line 92 of file WSClient.cpp.

◆ thread_

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

Definition at line 93 of file WSClient.cpp.

◆ stream_

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

Definition at line 94 of file WSClient.cpp.

◆ ws_

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

Definition at line 95 of file WSClient.cpp.

◆ rb_

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

Definition at line 96 of file WSClient.cpp.

◆ peerClosed_

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

Definition at line 98 of file WSClient.cpp.

◆ b0_

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

Definition at line 101 of file WSClient.cpp.

◆ m0_

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

Definition at line 102 of file WSClient.cpp.

◆ cv0_

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

Definition at line 103 of file WSClient.cpp.

◆ m_

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

Definition at line 106 of file WSClient.cpp.

◆ cv_

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

Definition at line 107 of file WSClient.cpp.

◆ msgs_

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

Definition at line 108 of file WSClient.cpp.

◆ rpc_version_

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

Definition at line 110 of file WSClient.cpp.