roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
request.h
Go to the documentation of this file.
1#pragma once
2
3#include "roo_backport.h"
4#include "roo_backport/byte.h"
5#include "roo_backport/string_view.h"
6#include "roo_time.h"
10
11namespace roo_transport {
12
13class RpcServer;
14
15// Source of truth about the pending request, maintained by the server.
17 public:
18 RpcRequest() = default;
19 RpcRequest(const RpcRequest&) = default;
20 RpcRequest& operator=(const RpcRequest&) = default;
21
23 RpcStreamId stream_id, roo_time::Uptime deadline, bool fin)
24 : connection_id_(connection_id),
25 function_id_(function_id),
26 stream_id_(stream_id),
27 deadline_(deadline),
28 client_closed_(fin),
29 server_closed_(false) {}
30
31 Messaging::ConnectionId connectionId() const { return connection_id_; }
32
33 RpcFunctionId functionId() const { return function_id_; }
34 RpcStreamId streamId() const { return stream_id_; }
35
36 roo_time::Uptime deadline() const { return deadline_; }
37
38 bool clientFin() const { return client_closed_; }
39 bool serverFin() const { return server_closed_; }
40
41 private:
42 Messaging::ConnectionId connection_id_;
43 RpcFunctionId function_id_;
44 RpcStreamId stream_id_;
45 roo_time::Uptime deadline_;
46 bool client_closed_;
47 bool server_closed_;
48};
49
50// Pass-by-value handle, used by handlers for sending responses.
52 public:
58
59 void sendSuccessResponse(const roo::byte* payload, size_t payload_size,
60 bool last) const;
61
62 void sendFailureResponse(RpcStatus status, roo::string_view msg) const;
63
64 private:
65 mutable RpcServer* server_;
66 Messaging::ConnectionId connection_id_;
67 RpcStreamId stream_id_;
68};
69
70} // namespace roo_transport
void sendFailureResponse(RpcStatus status, roo::string_view msg) const
Definition request.cpp:13
void sendSuccessResponse(const roo::byte *payload, size_t payload_size, bool last) const
Definition request.cpp:7
RequestHandle(RpcServer &server, Messaging::ConnectionId connection_id, RpcStreamId stream_id)
Definition request.h:53
bool clientFin() const
Definition request.h:38
Messaging::ConnectionId connectionId() const
Definition request.h:31
RpcRequest(const RpcRequest &)=default
RpcRequest & operator=(const RpcRequest &)=default
bool serverFin() const
Definition request.h:39
RpcStreamId streamId() const
Definition request.h:34
RpcFunctionId functionId() const
Definition request.h:33
roo_time::Uptime deadline() const
Definition request.h:36
RpcRequest(Messaging::ConnectionId connection_id, RpcFunctionId function_id, RpcStreamId stream_id, roo_time::Uptime deadline, bool fin)
Definition request.h:22
uint32_t RpcFunctionId
Definition rpc.h:10
uint32_t RpcStreamId
Definition rpc.h:11