X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/5987a5357ccfd818d540a7aa58eb498a1be07aa1..ba03b19875aa2e3586e49b10904563cdd3b91de0:/lock_client.h diff --git a/lock_client.h b/lock_client.h index 7b5edf6..5db2cbf 100644 --- a/lock_client.h +++ b/lock_client.h @@ -1,34 +1,23 @@ // lock client interface. #ifndef lock_client_h - #define lock_client_h #ifdef __cplusplus -#include +#include "types.h" #include "lock_protocol.h" -#include "rpc/rpc.h" -#include "lang/verify.h" #include "rpc/fifo.h" #include "rsm_client.h" class lock_release_user { public: virtual void dorelease(lock_protocol::lockid_t) = 0; - virtual ~lock_release_user() {}; + virtual ~lock_release_user() {} }; -using std::string; -using std::thread; -using std::list; -using std::map; - -typedef string callback; - class lock_state { public: - lock_state(); enum { none = 0, retrying, @@ -36,15 +25,15 @@ public: locked, acquiring, releasing - } state; - std::thread::id held_by; - list wanted_by; + } state = none; + thread::id held_by; + list wanted_by; mutex m; - map c; + map c; lock_protocol::xid_t xid; - void wait(); + void wait(lock & mutex_lock); void signal(); - void signal(std::thread::id who); + void signal(thread::id who); }; typedef map lock_map; @@ -54,22 +43,22 @@ typedef map lock_map; class lock_client { private: rpcc *cl; - std::thread releaser_thread; + thread releaser_thread; rsm_client *rsmc; - class lock_release_user *lu; - int rlock_port; + lock_release_user *lu; + in_port_t rlock_port; string hostname; string id; mutex xid_mutex; - lock_protocol::xid_t xid; + lock_protocol::xid_t next_xid; fifo release_fifo; mutex lock_table_lock; lock_map lock_table; lock_state &get_lock_state(lock_protocol::lockid_t lid); public: - static int last_port; - lock_client(string xdst, class lock_release_user *l = 0); - ~lock_client() {}; + 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);