X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/2546a41ad36fdc9ef6471cb35a1d56930ae1b527..f0dcb6b97d6d40f67698d1f71ac26970f1776f82:/lock_client.h?ds=sidebyside diff --git a/lock_client.h b/lock_client.h index 3290d1a..654cf4f 100644 --- a/lock_client.h +++ b/lock_client.h @@ -1,18 +1,14 @@ // 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" -#include "lock.h" class lock_release_user { public: @@ -20,11 +16,6 @@ class lock_release_user { virtual ~lock_release_user() {} }; -using std::string; -using std::map; -using std::thread; -using std::list; - class lock_state { public: enum { @@ -51,11 +42,12 @@ typedef map lock_map; // lock_revoke_server. class lock_client { private: - rpcc *cl; + unique_ptr cl; + unique_ptr rlsrpc; thread releaser_thread; - rsm_client *rsmc; - class lock_release_user *lu; - unsigned int rlock_port; + unique_ptr rsmc; + lock_release_user *lu; + in_port_t rlock_port; string hostname; string id; mutex xid_mutex; @@ -63,15 +55,15 @@ class lock_client { fifo 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); };