5 #include "lock_protocol.h"
9 typedef string callback_t;
10 typedef pair<callback_t, lock_protocol::xid_t> holder_t;
15 lock_state(const lock_state &other);
18 list<holder_t> wanted_by;
19 map<callback_t, lock_protocol::xid_t> old_requests;
21 lock_state& operator=(const lock_state&);
23 MEMBERS(held, held_by, wanted_by)
26 MARSHALLABLE(lock_state)
28 typedef map<lock_protocol::lockid_t, lock_state> lock_map;
30 class lock_server : public rsm_state_transfer {
33 mutex lock_table_lock;
35 lock_state &get_lock_state(lock_protocol::lockid_t lid);
36 fifo<lock_protocol::lockid_t> retry_fifo;
37 fifo<lock_protocol::lockid_t> revoke_fifo;
40 lock_server(rsm *r = 0);
41 lock_protocol::status stat(int &, lock_protocol::lockid_t);
44 string marshal_state();
45 void unmarshal_state(string state);
46 int acquire(int &, lock_protocol::lockid_t, string id, lock_protocol::xid_t);
47 int release(int &, lock_protocol::lockid_t, string id, lock_protocol::xid_t);