1 #ifndef lock_server_cache_rsm_h
2 #define lock_server_cache_rsm_h
8 #include "lock_protocol.h"
10 #include "rsm_state_transfer.h"
20 typedef string callback;
21 typedef pair<callback, lock_protocol::xid_t> holder;
28 list<holder> wanted_by;
29 map<callback, lock_protocol::xid_t> old_requests;
31 lock_state& operator=(const lock_state&);
34 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
36 class lock_server_cache_rsm : public rsm_state_transfer {
39 mutex lock_table_lock;
41 lock_state &get_lock_state(lock_protocol::lockid_t lid);
42 fifo<lock_protocol::lockid_t> retry_fifo;
43 fifo<lock_protocol::lockid_t> revoke_fifo;
46 lock_server_cache_rsm(class rsm *rsm = 0);
47 lock_protocol::status stat(lock_protocol::lockid_t, int &);
50 string marshal_state();
51 void unmarshal_state(string state);
52 int acquire(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);
53 int release(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);