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;
26 lock_state(const lock_state &other);
29 list<holder> wanted_by;
30 map<callback, lock_protocol::xid_t> old_requests;
32 lock_state& operator=(const lock_state&);
35 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
37 class lock_server_cache_rsm : public rsm_state_transfer {
40 mutex lock_table_lock;
42 lock_state &get_lock_state(lock_protocol::lockid_t lid);
43 fifo<lock_protocol::lockid_t> retry_fifo;
44 fifo<lock_protocol::lockid_t> revoke_fifo;
47 lock_server_cache_rsm(class rsm *rsm = 0);
48 lock_protocol::status stat(lock_protocol::lockid_t, int &);
51 string marshal_state();
52 void unmarshal_state(string state);
53 int acquire(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);
54 int release(lock_protocol::lockid_t, string id, lock_protocol::xid_t, int &);