Simplifications and clean-ups
[invirt/third/libt4.git] / rpc / rpc_protocol.h
index 4a3ff32..80089ff 100644 (file)
@@ -13,8 +13,8 @@ namespace rpc_protocol {
 
     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,
@@ -44,18 +44,16 @@ namespace rpc_protocol {
         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