summaryrefslogtreecommitdiffstats
path: root/src/Net/Connection.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/Connection.h')
-rw-r--r--src/Net/Connection.h38
1 files changed, 13 insertions, 25 deletions
diff --git a/src/Net/Connection.h b/src/Net/Connection.h
index 1176f92..1a3e72b 100644
--- a/src/Net/Connection.h
+++ b/src/Net/Connection.h
@@ -30,7 +30,8 @@
#include <sigc++/signal.h>
#include <poll.h>
-#include "glthread/lock.h"
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/shared_mutex.hpp>
#include <iostream>
@@ -63,10 +64,10 @@ class Connection {
sigc::slot<void,const void*,unsigned long> notify;
};
- gl_lock_t receiveLock;
+ boost::mutex receiveLock;
Transmission transR;
- gl_lock_t sendLock;
+ boost::mutex sendLock;
std::queue<Transmission> transS;
Packet::Data header;
@@ -112,7 +113,7 @@ class Connection {
uint8_t protVerMax;
};
- gl_rwlock_t stateLock;
+ boost::shared_mutex stateLock;
enum State {
DISCONNECTED, CONNECT, HANDSHAKE, CONNECTION_HEADER, PACKET_HEADER, PACKET_DATA, DISCONNECT, BYE
@@ -151,38 +152,25 @@ class Connection {
transR.length = transR.transmitted = 0;
transR.data = 0;
- gl_rwlock_init(stateLock);
- gl_lock_init(sendLock);
- gl_lock_init(receiveLock);
-
gnutls_certificate_allocate_credentials(&x509_cred);
}
virtual ~Connection();
bool isConnected() {
- gl_rwlock_rdlock(stateLock);
- bool ret = _isConnected();
- gl_rwlock_unlock(stateLock);
-
- return ret;
+ boost::shared_lock<boost::shared_mutex> lock(stateLock);
+ return _isConnected();
}
bool isConnecting() {
- gl_rwlock_rdlock(stateLock);
- bool ret = _isConnecting();
- gl_rwlock_unlock(stateLock);
-
- return ret;
+ boost::shared_lock<boost::shared_mutex> lock(stateLock);
+ return _isConnecting();
}
- /*bool isDisconnecting() {
- gl_rwlock_rdlock(stateLock);
- bool ret = (state == DISCONNECT || state == BYE);
- gl_rwlock_unlock(stateLock);
-
- return ret;
- }*/
+ bool isDisconnecting() {
+ boost::shared_lock<boost::shared_mutex> lock(stateLock);
+ return _isDisconnecting();
+ }
const gnutls_datum_t* getCertificate() const {
// TODO Thread-safeness