X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/f2170465073de34adf89161d4287182b518352c4..2546a41ad36fdc9ef6471cb35a1d56930ae1b527:/lock_client.h diff --git a/lock_client.h b/lock_client.h index 541cc23..3290d1a 100644 --- a/lock_client.h +++ b/lock_client.h @@ -12,6 +12,7 @@ #include "lang/verify.h" #include "rpc/fifo.h" #include "rsm_client.h" +#include "lock.h" class lock_release_user { public: @@ -20,15 +21,12 @@ class lock_release_user { }; using std::string; +using std::map; using std::thread; using std::list; -using std::map; - -typedef string callback; class lock_state { public: - lock_state(); enum { none = 0, retrying, @@ -36,15 +34,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,7 +52,7 @@ 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; unsigned int rlock_port;