Build on wheezy, and presumably precise
[invirt/third/libt4.git] / lock_server.h
1 // this is the lock server
2 // the lock client has a similar interface
3
4 #ifndef lock_server_h
5 #define lock_server_h
6
7 #include <string>
8 #include "lock_protocol.h"
9 #include "lock_client.h"
10 #include "rpc.h"
11 #include <pthread.h>
12 #include <list>
13 #include <map>
14 #include "mutex.h"
15
16 using namespace std;
17
18 typedef map<lock_protocol::lockid_t, mutex> lock_map;
19
20 class lock_server {
21
22  protected:
23   int nacquire;
24   mutex lock_lock;
25   lock_map locks;
26   mutex &get_lock(lock_protocol::lockid_t lid);
27
28  public:
29   lock_server();
30   ~lock_server() {};
31   lock_protocol::status stat(int clt, lock_protocol::lockid_t lid, int &);
32   lock_protocol::status acquire(int clt, lock_protocol::lockid_t lid, int &);
33   lock_protocol::status release(int clt, lock_protocol::lockid_t lid, int &);
34 };
35
36 #endif