Fixed two major bugs in paxos.cc.
[invirt/third/libt4.git] / lock_server.h
index 2aa8445..560167f 100644 (file)
@@ -1,37 +1,30 @@
 #ifndef lock_server_h
 #define lock_server_h
 
-#include <string>
-
-#include <map>
-#include <vector>
+#include "types.h"
 #include "lock_protocol.h"
-#include "rpc/rpc.h"
-#include "rsm_state_transfer.h"
 #include "rsm.h"
 #include "rpc/fifo.h"
-#include "lock.h"
-
-using std::string;
-using std::pair;
-using std::list;
-using std::map;
 
-typedef string callback;
-typedef pair<callback, lock_protocol::xid_t> holder;
+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);
     bool held;
-    holder held_by;
-    list<holder> wanted_by;
-    map<callback, lock_protocol::xid_t> old_requests;
+    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&);
+
+    MEMBERS(held, held_by, wanted_by)
 };
 
+MARSHALLABLE(lock_state)
+
 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
 
 class lock_server : public rsm_state_transfer {
@@ -42,9 +35,9 @@ class lock_server : public rsm_state_transfer {
         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;
+        rsm *rsm_;
     public:
-        lock_server(class rsm *rsm = 0);
+        lock_server(rsm *r = 0);
         lock_protocol::status stat(int &, lock_protocol::lockid_t);
         void revoker();
         void retryer();