Simplifications and clean-ups
[invirt/third/libt4.git] / rpc / rpc_protocol.h
index 881de9b..80089ff 100644 (file)
@@ -8,11 +8,13 @@ namespace rpc_protocol {
 
     using status = int32_t;
     using rpc_sz_t = uint32_t;
 
     using status = int32_t;
     using rpc_sz_t = uint32_t;
+    using nonce_t = uint32_t;
+    using xid_t = int32_t;
 
     enum : status {
         timeout_failure = -1,
 
     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,
         atmostonce_failure = -4,
         oldsrv_failure = -5,
         bind_failure = -6,
@@ -20,17 +22,17 @@ namespace rpc_protocol {
     };
 
     struct request_header {
     };
 
     struct request_header {
-        int xid;
+        xid_t xid;
         proc_id_t proc;
         proc_id_t proc;
-        unsigned int clt_nonce;
-        unsigned int srv_nonce;
-        int xid_rep;
+        nonce_t clt_nonce;
+        nonce_t srv_nonce;
+        xid_t xid_rep;
 
         MEMBERS(xid, proc, clt_nonce, srv_nonce, xid_rep)
     };
 
     struct reply_header {
 
         MEMBERS(xid, proc, clt_nonce, srv_nonce, xid_rep)
     };
 
     struct reply_header {
-        int xid;
+        xid_t xid;
         int ret;
 
         MEMBERS(xid, ret)
         int ret;
 
         MEMBERS(xid, ret)
@@ -42,18 +44,16 @@ namespace rpc_protocol {
         proc_id_t id;
     };
 
         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 DEFAULT_RPC_SZ = 1024; // size of initial buffer allocation
-    const size_t MAX_PDU = 10<<20; //maximum PDF is 10M
+    const size_t MAX_PDU = 10<<20; // maximum PDF is 10M
 
 
-#define REMOTE_PROCEDURE_BASE(_base_) enum proc_no : ::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_BASE(0);
-    REMOTE_PROCEDURE(1, bind, (unsigned int &, int)); // handler number reserved for bind
-};
-
-ENDIAN_SWAPPABLE(rpc_protocol::request_header)
-ENDIAN_SWAPPABLE(rpc_protocol::reply_header)
+    REMOTE_PROCEDURE(1, bind, (nonce_t &)); // handler number reserved for bind
+}
 
 #endif
 
 #endif