enum : status {
timeout_failure = -1,
- unmarshal_args_failure = -2,
- unmarshal_reply_failure = -3,
+ unmarshall_args_failure = -2,
+ unmarshall_reply_failure = -3,
atmostonce_failure = -4,
oldsrv_failure = -5,
bind_failure = -6,
proc_id_t id;
};
- const size_t RPC_HEADER_SZ = max(sizeof(request_header), sizeof(reply_header)) + sizeof(rpc_sz_t);
+ union header_t { request_header req; reply_header rep; };
+ const size_t RPC_HEADER_SZ = sizeof(header_t) + sizeof(rpc_sz_t);
const size_t DEFAULT_RPC_SZ = 1024; // size of initial buffer allocation
const size_t MAX_PDU = 10<<20; // maximum PDF is 10M
-#define REMOTE_PROCEDURE_BASE(_base_) static constexpr rpc_protocol::proc_id_t base = _base_;
-#define REMOTE_PROCEDURE(_offset_, _name_, _args_) static constexpr rpc_protocol::proc_t<status _args_> _name_{base + _offset_};
+#define REMOTE_PROCEDURE_BASE(_base_) static constexpr rpc_protocol::proc_id_t base = _base_
+#define REMOTE_PROCEDURE(_offset_, _name_, _args_) static constexpr rpc_protocol::proc_t<status _args_> _name_{base + _offset_}
REMOTE_PROCEDURE_BASE(0);
REMOTE_PROCEDURE(1, bind, (nonce_t &)); // handler number reserved for bind
-};
-
-ENDIAN_SWAPPABLE(rpc_protocol::request_header)
-ENDIAN_SWAPPABLE(rpc_protocol::reply_header)
+}
#endif