#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