5 #include "lock_protocol.h"
9 typedef pair<callback_t, lock_protocol::xid_t> holder_t;
14 lock_state(const lock_state &other);
17 list<holder_t> wanted_by;
18 map<callback_t, lock_protocol::xid_t> old_requests;
20 lock_state& operator=(const lock_state&);
22 MEMBERS(held, held_by, wanted_by)
25 MARSHALLABLE(lock_state)
27 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
29 class lock_server : public rsm_state_transfer {
32 mutex lock_table_lock;
34 lock_state &get_lock_state(lock_protocol::lockid_t lid);
35 fifo<lock_protocol::lockid_t> retry_fifo;
36 fifo<lock_protocol::lockid_t> revoke_fifo;
39 lock_server(rsm *r = 0);
42 string marshal_state();
43 void unmarshal_state(const string & state);
44 lock_protocol::status acquire(int &, lock_protocol::lockid_t, const callback_t & id, lock_protocol::xid_t);
45 lock_protocol::status release(int &, lock_protocol::lockid_t, const callback_t & id, lock_protocol::xid_t);
46 lock_protocol::status stat(int &, lock_protocol::lockid_t, const callback_t & id);