JSON-RPC 2.0
JSON-RPC 2.0 Modern C++ Library
Loading...
Searching...
No Matches
jsonrpc::transport::Transport Class Referenceabstract

#include <transport.hpp>

Inheritance diagram for jsonrpc::transport::Transport:
Collaboration diagram for jsonrpc::transport::Transport:

Public Member Functions

 Transport (asio::any_io_executor executor, std::shared_ptr< spdlog::logger > logger=nullptr)
 
 Transport (const Transport &)=delete
 
 Transport (Transport &&)=delete
 
auto operator= (const Transport &) -> Transport &=delete
 
auto operator= (Transport &&) -> Transport &=delete
 
virtual ~Transport ()=default
 
virtual auto Start () -> asio::awaitable< std::expected< void, error::RpcError > >=0
 
virtual auto Close () -> asio::awaitable< std::expected< void, error::RpcError > >=0
 
virtual auto CloseNow () -> void=0
 
virtual auto SendMessage (std::string message) -> asio::awaitable< std::expected< void, error::RpcError > >=0
 
virtual auto ReceiveMessage () -> asio::awaitable< std::expected< std::string, error::RpcError > >=0
 
auto GetExecutor () const -> asio::any_io_executor
 
auto GetStrand () -> asio::strand< asio::any_io_executor > &
 

Protected Member Functions

auto Logger () -> std::shared_ptr< spdlog::logger >
 

Detailed Description

Definition at line 13 of file transport.hpp.

Constructor & Destructor Documentation

◆ Transport() [1/3]

jsonrpc::transport::Transport::Transport ( asio::any_io_executor executor,
std::shared_ptr< spdlog::logger > logger = nullptr )
inlineexplicit

Definition at line 15 of file transport.hpp.

18 : logger_(logger ? logger : spdlog::default_logger()),
19 executor_(std::move(executor)),
20 strand_(asio::make_strand(executor_)) {
21 }

◆ Transport() [2/3]

jsonrpc::transport::Transport::Transport ( const Transport & )
delete

◆ Transport() [3/3]

jsonrpc::transport::Transport::Transport ( Transport && )
delete

◆ ~Transport()

virtual jsonrpc::transport::Transport::~Transport ( )
virtualdefault

Member Function Documentation

◆ Close()

virtual auto jsonrpc::transport::Transport::Close ( ) -> asio::awaitable< std::expected< void, error::RpcError > >
pure virtual

◆ CloseNow()

virtual auto jsonrpc::transport::Transport::CloseNow ( ) -> void
pure virtual

◆ GetExecutor()

auto jsonrpc::transport::Transport::GetExecutor ( ) const -> asio::any_io_executor
inlinenodiscard

Definition at line 45 of file transport.hpp.

45 {
46 return executor_;
47 }

◆ GetStrand()

auto jsonrpc::transport::Transport::GetStrand ( ) -> asio::strand<asio::any_io_executor> &
inlinenodiscard

Definition at line 49 of file transport.hpp.

49 {
50 return strand_;
51 }

◆ Logger()

auto jsonrpc::transport::Transport::Logger ( ) -> std::shared_ptr<spdlog::logger>
inlineprotected

Definition at line 54 of file transport.hpp.

54 {
55 return logger_;
56 }

Referenced by jsonrpc::transport::PipeTransport::CloseNow(), jsonrpc::transport::SocketTransport::CloseNow(), jsonrpc::transport::PipeTransport::~PipeTransport(), and jsonrpc::transport::SocketTransport::~SocketTransport().

Here is the caller graph for this function:

◆ operator=() [1/2]

auto jsonrpc::transport::Transport::operator= ( const Transport & ) -> Transport &=delete
delete

◆ operator=() [2/2]

auto jsonrpc::transport::Transport::operator= ( Transport && ) -> Transport &=delete
delete

◆ ReceiveMessage()

virtual auto jsonrpc::transport::Transport::ReceiveMessage ( ) -> asio::awaitable< std::expected< std::string, error::RpcError > >
pure virtual

◆ SendMessage()

virtual auto jsonrpc::transport::Transport::SendMessage ( std::string message) -> asio::awaitable< std::expected< void, error::RpcError > >
pure virtual

◆ Start()

virtual auto jsonrpc::transport::Transport::Start ( ) -> asio::awaitable< std::expected< void, error::RpcError > >
pure virtual

The documentation for this class was generated from the following file: