Rewrote threaded log code to be more idiomatic.
[invirt/third/libt4.git] / lock_server.h
index 5c182e0..1f30f87 100644 (file)
@@ -6,45 +6,44 @@
 #include "rsm.h"
 #include "rpc/fifo.h"
 
-typedef string callback_t;
 typedef pair<callback_t, lock_protocol::xid_t> holder_t;
 
 class lock_state {
 public:
     lock_state();
-    lock_state(const lock_state &other);
+    lock_state(const lock_state & other);
     bool held;
     holder_t held_by;
     list<holder_t> wanted_by;
     map<callback_t, lock_protocol::xid_t> old_requests;
     mutex m;
-    lock_state& operator=(const lock_state&);
+    lock_state & operator=(const lock_state &);
 
     MEMBERS(held, held_by, wanted_by)
 };
 
-MARSHALLABLE(lock_state)
+MARSHALLABLE_STRUCT(lock_state)
 
 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
 
-class lock_server : public rsm_state_transfer {
+class lock_server : private rsm_state_transfer {
     private:
         int nacquire;
         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);
         fifo<lock_protocol::lockid_t> retry_fifo;
         fifo<lock_protocol::lockid_t> revoke_fifo;
-        class rsm *rsm;
-    public:
-        lock_server(class rsm *rsm = 0);
-        lock_protocol::status stat(int &, lock_protocol::lockid_t);
-        void revoker();
-        void retryer();
+        rsm *rsm_;
         string marshal_state();
-        void unmarshal_state(string state);
-        int acquire(int &, lock_protocol::lockid_t, string id, lock_protocol::xid_t);
-        int release(int &, lock_protocol::lockid_t, string id, lock_protocol::xid_t);
+        void unmarshal_state(const string & state);
+        void revoker NORETURN ();
+        void retryer NORETURN ();
+    public:
+        lock_server(rsm & r);
+        lock_protocol::status acquire(int &, lock_protocol::lockid_t, const callback_t & id, lock_protocol::xid_t);
+        lock_protocol::status release(int &, lock_protocol::lockid_t, const callback_t & id, lock_protocol::xid_t);
+        lock_protocol::status stat(int &, lock_protocol::lockid_t, const callback_t & id);
 };
 
 #endif