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

Generic synchronous RPC server. More...

#include <blocking_server.hpp>

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

Public Types

using callback_type = std::function<std::optional<Response>(Request)>
 Handler callback function type which accepts a request and returns a response, or returns std::nullopt if it encounters an error while processing the request.
 
- Public Types inherited from cbdc::rpc::server< Request, Response, buffer, buffer >
using request_type
 
using response_type
 

Public Member Functions

 blocking_server ()=default
 
 blocking_server (blocking_server &&) noexcept=default
 
auto operator= (blocking_server &&) noexcept -> blocking_server &=default
 
 blocking_server (const blocking_server &)=default
 
auto operator= (const blocking_server &) -> blocking_server &=default
 
 ~blocking_server () override=default
 
void register_handler_callback (callback_type callback)
 Register a handler callback function for processing requests and returning responses.
 
- Public Member Functions inherited from cbdc::rpc::server< Request, Response, buffer, buffer >
 server ()=default
 
 server (server &&) noexcept=default
 
 server (const server &)=default
 
auto operator= (server &&) noexcept -> server &=default
 
auto operator= (const server &) -> server &=default
 
virtual ~server ()=default
 

Static Public Attributes

static constexpr handler_type handler = handler_type::blocking
 

Protected Member Functions

auto blocking_call (InBuffer request_buf) -> std::optional< OutBuffer >
 Synchronously deserializes an RPC request, calls the request handler function, then serializes and returns the response.
 
- Protected Member Functions inherited from cbdc::rpc::server< Request, Response, buffer, buffer >
auto deserialize_request (BufType &request_buf) -> std::optional< request_type >
 Deserializes a request from a buffer.
 
auto serialize_response (header request_header, std::optional< R > response_payload) -> buffer
 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::blocking_server< Request, Response, InBuffer, OutBuffer >

Generic synchronous RPC server.

Handles serialization of requests and responses. Dispatches incoming requests to a handler callback for processing. Subclass to define specific remote communication logic.

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 25 of file blocking_server.hpp.

Member Typedef Documentation

◆ callback_type

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
using cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::callback_type = std::function<std::optional<Response>(Request)>

Handler callback function type which accepts a request and returns a response, or returns std::nullopt if it encounters an error while processing the request.

Definition at line 42 of file blocking_server.hpp.

Constructor & Destructor Documentation

◆ blocking_server() [1/3]

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

◆ blocking_server() [2/3]

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

◆ blocking_server() [3/3]

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

◆ ~blocking_server()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::~blocking_server ( )
overridedefault

Member Function Documentation

◆ blocking_call()

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

Synchronously deserializes an RPC request, calls the request handler function, then serializes and returns the response.

Parameters
request_bufbuffer holding an RPC request.
Returns
serialized response, or std::nullopt if deserializing or handling the request failed.

Definition at line 58 of file blocking_server.hpp.

References cbdc::rpc::server< Request, Response, InBuffer, OutBuffer >::deserialize_request(), 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::blocking_server< Request, Response, InBuffer, OutBuffer >::operator= ( blocking_server< Request, Response, InBuffer, OutBuffer > && ) -> blocking_server &=default
defaultnoexcept

◆ operator=() [2/2]

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

◆ register_handler_callback()

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
void cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::register_handler_callback ( callback_type callback)
inline

Register a handler callback function for processing requests and returning responses.

Parameters
callbackfunction to register to process client requests and return responses.

Definition at line 48 of file blocking_server.hpp.

Field Documentation

◆ handler

template<typename Request , typename Response , typename InBuffer = buffer, typename OutBuffer = buffer>
handler_type cbdc::rpc::blocking_server< Request, Response, InBuffer, OutBuffer >::handler = handler_type::blocking
staticconstexpr

Definition at line 37 of file blocking_server.hpp.


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