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
-
Request | type for requests. |
Response | type for responses. |
InBuffer | type of buffer for serialized requests, defaults to cbdc::buffer |
OutBuffer | type of buffer for serialized responses, defaults to cbdc::buffer |
Definition at line 25 of file blocking_server.hpp.
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.
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_buf | buffer 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().