1 #ifndef lock_server_cache_rsm_h
2 #define lock_server_cache_rsm_h
8 #include "lock_protocol.h"
11 #include "rsm_state_transfer.h"
17 typedef string callback;
18 typedef pair<callback, lock_protocol::xid_t> holder;
25 list<holder> wanted_by;
26 map<callback, lock_protocol::xid_t> old_requests;
30 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
32 class lock_server_cache_rsm : public rsm_state_transfer {
35 mutex lock_table_lock;
37 lock_state &get_lock_state(lock_protocol::lockid_t lid);
38 fifo<lock_protocol::lockid_t> retry_fifo;
39 fifo<lock_protocol::lockid_t> revoke_fifo;
42 lock_server_cache_rsm(class rsm *rsm = 0);
43 lock_protocol::status stat(lock_protocol::lockid_t, int &);
46 string marshal_state();
47 void unmarshal_state(string state);
48 int acquire(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);
49 int release(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);