projects
/
invirt/third/libt4.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Partially fixed a bug in the test suite that led to test runs randomly failing.
[invirt/third/libt4.git]
/
lock_client.h
diff --git
a/lock_client.h
b/lock_client.h
index
541cc23
..
5db2cbf
100644
(file)
--- a/
lock_client.h
+++ b/
lock_client.h
@@
-1,15
+1,12
@@
// lock client interface.
#ifndef lock_client_h
// lock client interface.
#ifndef lock_client_h
-
#define lock_client_h
#ifdef __cplusplus
#define lock_client_h
#ifdef __cplusplus
-#include <string>
+#include "types.h"
#include "lock_protocol.h"
#include "lock_protocol.h"
-#include "rpc/rpc.h"
-#include "lang/verify.h"
#include "rpc/fifo.h"
#include "rsm_client.h"
#include "rpc/fifo.h"
#include "rsm_client.h"
@@
-19,16
+16,8
@@
class lock_release_user {
virtual ~lock_release_user() {}
};
virtual ~lock_release_user() {}
};
-using std::string;
-using std::thread;
-using std::list;
-using std::map;
-
-typedef string callback;
-
class lock_state {
public:
class lock_state {
public:
- lock_state();
enum {
none = 0,
retrying,
enum {
none = 0,
retrying,
@@
-36,15
+25,15
@@
public:
locked,
acquiring,
releasing
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;
mutex m;
- map<std::thread::id, std::condition_variable> c;
+ map<thread::id, cond> c;
lock_protocol::xid_t xid;
lock_protocol::xid_t xid;
- void wait();
+ void wait(lock & mutex_lock);
void signal();
void signal();
- void signal(std::thread::id who);
+ void signal(thread::id who);
};
typedef map<lock_protocol::lockid_t, lock_state> lock_map;
};
typedef map<lock_protocol::lockid_t, lock_state> lock_map;
@@
-54,10
+43,10
@@
typedef map<lock_protocol::lockid_t, lock_state> lock_map;
class lock_client {
private:
rpcc *cl;
class lock_client {
private:
rpcc *cl;
- std::thread releaser_thread;
+ thread releaser_thread;
rsm_client *rsmc;
rsm_client *rsmc;
- class lock_release_user *lu;
- unsigned int rlock_port;
+ lock_release_user *lu;
+ in_port_t rlock_port;
string hostname;
string id;
mutex xid_mutex;
string hostname;
string id;
mutex xid_mutex;
@@
-67,8
+56,8
@@
class lock_client {
lock_map lock_table;
lock_state &get_lock_state(lock_protocol::lockid_t lid);
public:
lock_map lock_table;
lock_state &get_lock_state(lock_protocol::lockid_t lid);
public:
- static unsigned int last_port;
- lock_client(string xdst, class lock_release_user *l = 0);
+ static in_port_t last_port;
+ lock_client(string xdst, lock_release_user *l = 0);
~lock_client() {}
lock_protocol::status acquire(lock_protocol::lockid_t);
lock_protocol::status release(lock_protocol::lockid_t);
~lock_client() {}
lock_protocol::status acquire(lock_protocol::lockid_t);
lock_protocol::status release(lock_protocol::lockid_t);