#include "lang/verify.h"
#include "rpc/fifo.h"
#include "rsm_client.h"
+#include "lock.h"
class lock_release_user {
public:
};
using std::string;
+using std::map;
using std::thread;
using std::list;
-using std::map;
-
-typedef string callback;
class lock_state {
public:
- lock_state();
enum {
none = 0,
retrying,
locked,
acquiring,
releasing
- } state;
- std::thread::id held_by;
- list<std::thread::id> wanted_by;
+ } state = none;
+ thread::id held_by;
+ list<thread::id> wanted_by;
mutex m;
- map<std::thread::id, std::condition_variable> c;
+ map<thread::id, cond> c;
lock_protocol::xid_t xid;
- void wait();
+ void wait(lock & mutex_lock);
void signal();
- void signal(std::thread::id who);
+ void signal(thread::id who);
};
typedef map<lock_protocol::lockid_t, lock_state> lock_map;
class lock_client {
private:
rpcc *cl;
- std::thread releaser_thread;
+ thread releaser_thread;
rsm_client *rsmc;
class lock_release_user *lu;
unsigned int rlock_port;