All sleep calls via std::this_thread
[invirt/third/libt4.git] / lock_protocol.h
index 1e45ddc..8cccebe 100644 (file)
@@ -1,29 +1,27 @@
-// lock protocol
-
 #ifndef lock_protocol_h
 #define lock_protocol_h
 
 #include "types.h"
 #include "rpc/rpc.h"
 
-class lock_protocol {
-    public:
-        enum status : status_t { OK, RETRY, RPCERR, NOENT, IOERR };
-        using lockid_t = string;
-        using xid_t = uint64_t;
-        enum rpc_numbers : proc_t {
-            acquire = 0x7001,
-            release,
-            stat,
-        };
-};
+typedef string callback_t;
+
+namespace lock_protocol {
+    enum status : rpc_protocol::status { OK, RETRY, RPCERR, NOENT, IOERR };
+    using lockid_t = string;
+    using xid_t = uint64_t;
+    REMOTE_PROCEDURE_BASE(0x7000);
+    REMOTE_PROCEDURE(1, acquire, (int &, lockid_t, callback_t, xid_t));
+    REMOTE_PROCEDURE(2, release, (int &, lockid_t, callback_t, xid_t));
+    REMOTE_PROCEDURE(3, stat, (int &, lockid_t, callback_t));
+}
 
-class rlock_protocol {
-    public:
-        enum status : status_t { OK, RPCERR };
-        enum rpc_numbers : proc_t {
-            revoke = 0x8001,
-            retry,
-        };
-};
+namespace rlock_protocol {
+    using lockid_t = lock_protocol::lockid_t;
+    using xid_t = lock_protocol::xid_t;
+    enum status : rpc_protocol::status { OK, RPCERR };
+    REMOTE_PROCEDURE_BASE(0x8000);
+    REMOTE_PROCEDURE(1, revoke, (int &, lockid_t, xid_t));
+    REMOTE_PROCEDURE(2, retry, (int &, lockid_t, xid_t));
+}
 #endif