- public:
- lock_server();
- ~lock_server() {};
- lock_protocol::status stat(int clt, lock_protocol::lockid_t lid, int &);
- lock_protocol::status acquire(int clt, lock_protocol::lockid_t lid, int &);
- lock_protocol::status release(int clt, lock_protocol::lockid_t lid, int &);
+MARSHALLABLE(lock_state)
+
+typedef map<lock_protocol::lockid_t, lock_state> lock_map;
+
+class lock_server : public rsm_state_transfer {
+ private:
+ int nacquire;
+ mutex lock_table_lock;
+ lock_map lock_table;
+ lock_state &get_lock_state(lock_protocol::lockid_t lid);
+ fifo<lock_protocol::lockid_t> retry_fifo;
+ fifo<lock_protocol::lockid_t> revoke_fifo;
+ rsm *rsm_;
+ public:
+ lock_server(rsm *r = 0);
+ lock_protocol::status stat(int &, lock_protocol::lockid_t);
+ void revoker();
+ void retryer();
+ 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);