OpenCBDC Transaction Processor
Loading...
Searching...
No Matches
cbdc::rpc::server< Request, Response, InBuffer, OutBuffer > Class Template Reference

Generic RPC server. More...

#include <server.hpp>

Inheritance diagram for cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >:

Public Types

using request_type = request<Request>
 
using response_type = response<Response>
 

Public Member Functions

 server ()=default
 
 server (server &&) noexcept=default
 
auto operator= (server &&) noexcept -> server &=default
 
 server (const server &)=default
 
auto operator= (const server &) -> server &=default
 
virtual ~server ()=default
 

Protected Member Functions

template<typename BufType = InBuffer>
auto deserialize_request (BufType &request_buf) -> std::optional< request_type >
 Deserializes a request from a buffer.
 
template<typename R = Response>
auto serialize_response (header request_header, std::optional< R > response_payload) -> OutBuffer
 Serialize a response into a buffer.
 
auto make_failure_response (cbdc::buffer &request_buf) -> std::optional< cbdc::buffer >
 Serialize a failure response buffer from the given request buffer.
 

Detailed Description

template<typename Request, typename Response, typename InBuffer = buffer, typename OutBuffer = buffer>
class cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >

Generic RPC server.

Handles serialization of requests and responses. Subclass to implement request handling functionality.

Template Parameters
Requesttype for requests.
Responsetype for responses.
InBuffertype of buffer for serialized requests, defaults to cbdc::buffer
OutBuffertype of buffer for serialized responses, defaults to cbdc::buffer

Definition at line 37 of file util/rpc/server.hpp.

Member Typedef Documentation

◆ request_type

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
using cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::request_type = request<Request>

Definition at line 47 of file util/rpc/server.hpp.

◆ response_type

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
using cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::response_type = response<Response>

Definition at line 48 of file util/rpc/server.hpp.

Constructor & Destructor Documentation

◆ server() [1/3]

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::server ( )
default

◆ server() [2/3]

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::server ( server< Request, Response, InBuffer, OutBuffer > && )
defaultnoexcept

◆ server() [3/3]

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::server ( const server< Request, Response, InBuffer, OutBuffer > & )
default

◆ ~server()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
virtual cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::~server ( )
virtualdefault

Member Function Documentation

◆ deserialize_request()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
template<typename BufType = InBuffer>
auto cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::deserialize_request ( BufType & request_buf) -> std::optional<request_type>
inlineprotected

Deserializes a request from a buffer.

Template Parameters
BufTypetype of buffer to deserialize from.
Parameters
request_bufbuffer to deserialize.
Returns
deserialized request object, or std::nullopt if deserialization failed.

Definition at line 57 of file util/rpc/server.hpp.

References cbdc::from_buffer().

Referenced by cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::blocking_call().

Here is the call graph for this function:

◆ make_failure_response()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
auto cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::make_failure_response ( cbdc::buffer & request_buf) -> std::optional<cbdc::buffer>
inlineprotected

Serialize a failure response buffer from the given request buffer.

Parameters
request_bufbuffer containing a failed RPC request.
Returns
serialized failure response, or std::nullopt if deserializing the request failed.

Definition at line 80 of file util/rpc/server.hpp.

References cbdc::from_buffer(), and cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::serialize_response().

Here is the call graph for this function:

◆ operator=() [1/2]

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
auto cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::operator= ( const server< Request, Response, InBuffer, OutBuffer > & ) -> server &=default
default

◆ operator=() [2/2]

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
auto cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::operator= ( server< Request, Response, InBuffer, OutBuffer > && ) -> server &=default
defaultnoexcept

◆ serialize_response()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
template<typename R = Response>
auto cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::serialize_response ( header request_header,
std::optional< R > response_payload ) -> OutBuffer
inlineprotected

Serialize a response into a buffer.

Template Parameters
typeof response payload. Defaults to Response.
Parameters
request_headerheader from the corresponding request.
response_payloadpayload to include in the response, or std::nullopt if the request failed.
Returns
serialized response buffer.

Definition at line 69 of file util/rpc/server.hpp.

References cbdc::make_buffer().

Referenced by cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::blocking_call(), and cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::make_failure_response().

Here is the call graph for this function:

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