6#ifndef OPENCBDC_TX_SRC_RPC_BLOCKING_SERVER_H_
7#define OPENCBDC_TX_SRC_RPC_BLOCKING_SERVER_H_
21 template<
typename Request,
23 typename InBuffer =
buffer,
24 typename OutBuffer =
buffer>
26 :
public server<Request, Response, InBuffer, OutBuffer> {
49 m_callback = std::move(callback);
60 if(!req.has_value()) {
63 auto resp = std::optional<Response>();
65 resp = m_callback(std::move(req.value().m_payload));
68 std::move(req.value().m_header),
Generic synchronous RPC server.
blocking_server()=default
auto blocking_call(InBuffer request_buf) -> std::optional< OutBuffer >
Synchronously deserializes an RPC request, calls the request handler function, then serializes and re...
static constexpr handler_type handler
std::function< std::optional< Response >(Request)> callback_type
Handler callback function type which accepts a request and returns a response, or returns std::nullop...
blocking_server(blocking_server &&) noexcept=default
void register_handler_callback(callback_type callback)
Register a handler callback function for processing requests and returning responses.
auto serialize_response(header request_header, std::optional< R > response_payload) -> OutBuffer
Serialize a response into a buffer.
auto deserialize_request(BufType &request_buf) -> std::optional< request_type >
Deserializes a request from a buffer.
handler_type
Type to distinguish between servers that implement synchronous versus asynchronous request handling.
@ buffer
A singular RLP value (byte array)