// lock client interface.
#ifndef lock_client_h
-
#define lock_client_h
#ifdef __cplusplus
-#include <string>
+#include "types.h"
#include "lock_protocol.h"
-#include "rpc/rpc.h"
-#include "lang/verify.h"
#include "rpc/fifo.h"
#include "rsm_client.h"
-#include "lock.h"
class lock_release_user {
public:
virtual ~lock_release_user() {}
};
-using std::string;
-using std::map;
-using std::thread;
-using std::list;
-
class lock_state {
public:
enum {
// lock_revoke_server.
class lock_client {
private:
- rpcc *cl;
+ unique_ptr<rpcc> cl;
+ unique_ptr<rpcs> rlsrpc;
thread releaser_thread;
- rsm_client *rsmc;
- class lock_release_user *lu;
- unsigned int rlock_port;
+ unique_ptr<rsm_client> rsmc;
+ lock_release_user *lu;
+ in_port_t rlock_port;
string hostname;
string id;
mutex xid_mutex;
fifo<lock_protocol::lockid_t> release_fifo;
mutex lock_table_lock;
lock_map lock_table;
- lock_state &get_lock_state(lock_protocol::lockid_t lid);
+ lock_state & get_lock_state(lock_protocol::lockid_t lid);
public:
- static unsigned int last_port;
- lock_client(string xdst, class lock_release_user *l = 0);
+ static in_port_t last_port;
+ lock_client(string xdst, lock_release_user *l = 0);
~lock_client() {}
lock_protocol::status acquire(lock_protocol::lockid_t);
lock_protocol::status release(lock_protocol::lockid_t);
int stat(lock_protocol::lockid_t);
- void releaser();
+ void releaser NORETURN ();
rlock_protocol::status revoke_handler(int &, lock_protocol::lockid_t, lock_protocol::xid_t);
rlock_protocol::status retry_handler(int &, lock_protocol::lockid_t, lock_protocol::xid_t);
};