- list<std::thread::id> wanted_by;
- mutex m;
- map<std::thread::id, std::condition_variable> c;
+ std::list<thread::id> wanted_by;
+ std::mutex m;
+ std::map<thread::id, cond> c;
- rpcc *cl;
- std::thread releaser_thread;
- rsm_client *rsmc;
- class lock_release_user *lu;
- int rlock_port;
+ unique_ptr<rpcc> cl;
+ unique_ptr<rpcs> rlsrpc;
+ thread releaser_thread;
+ unique_ptr<rsm_client> rsmc;
+ lock_release_user *lu;
+ in_port_t rlock_port;
- mutex xid_mutex;
- lock_protocol::xid_t xid;
- fifo<lock_protocol::lockid_t> release_fifo;
- mutex lock_table_lock;
+ std::mutex xid_mutex;
+ lock_protocol::xid_t next_xid;
+ fifo<maybe<lock_protocol::lockid_t>> release_fifo;
+ std::mutex lock_table_lock;
lock_protocol::status acquire(lock_protocol::lockid_t);
lock_protocol::status release(lock_protocol::lockid_t);
int stat(lock_protocol::lockid_t);
lock_protocol::status acquire(lock_protocol::lockid_t);
lock_protocol::status release(lock_protocol::lockid_t);
int stat(lock_protocol::lockid_t);
t4_status t4_lock_client_release(t4_lock_client *, t4_lockid_t);
t4_status t4_lock_client_stat(t4_lock_client *, t4_lockid_t);
t4_status t4_lock_client_release(t4_lock_client *, t4_lockid_t);
t4_status t4_lock_client_stat(t4_lock_client *, t4_lockid_t);