Simplifications and clean-ups
[invirt/third/libt4.git] / lock_protocol.h
1 #ifndef lock_protocol_h
2 #define lock_protocol_h
3
4 #include "types.h"
5 #include "rpc/rpc.h"
6
7 typedef string callback_t;
8
9 namespace lock_protocol {
10     enum status : rpc_protocol::status { OK, RETRY, RPCERR, NOENT, IOERR };
11     using lockid_t = string;
12     using xid_t = uint64_t;
13     REMOTE_PROCEDURE_BASE(0x7000);
14     REMOTE_PROCEDURE(1, acquire, (int &, lockid_t, callback_t, xid_t));
15     REMOTE_PROCEDURE(2, release, (int &, lockid_t, callback_t, xid_t));
16     REMOTE_PROCEDURE(3, stat, (int &, lockid_t, callback_t));
17 }
18
19 namespace rlock_protocol {
20     using lockid_t = lock_protocol::lockid_t;
21     using xid_t = lock_protocol::xid_t;
22     enum status : rpc_protocol::status { OK, RPCERR };
23     REMOTE_PROCEDURE_BASE(0x8000);
24     REMOTE_PROCEDURE(1, revoke, (int &, lockid_t, xid_t));
25     REMOTE_PROCEDURE(2, retry, (int &, lockid_t, xid_t));
26 }
27 #endif