summaryrefslogtreecommitdiffstats
path: root/src/Net/Connection.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-05-30 13:37:06 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-05-30 13:37:06 +0200
commita77d2d1e08e4e2e8dfb5e4fc326f6c8fe315a898 (patch)
tree36a4c899af336c7e9dc326da7231d4d9e17e8a1b /src/Net/Connection.h
parentcb8e66c1b1f1c8076053d71347d0b1f96ca0bca1 (diff)
downloadmad-a77d2d1e08e4e2e8dfb5e4fc326f6c8fe315a898.tar
mad-a77d2d1e08e4e2e8dfb5e4fc326f6c8fe315a898.zip
Thread-sichere Signale implementiert
Diffstat (limited to 'src/Net/Connection.h')
-rw-r--r--src/Net/Connection.h32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/Net/Connection.h b/src/Net/Connection.h
index 6678bd9..cda8bfe 100644
--- a/src/Net/Connection.h
+++ b/src/Net/Connection.h
@@ -23,12 +23,11 @@
#include <config.h>
#include "Packet.h"
+#include "Signals/Signals.h"
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
-#include <boost/signal.hpp>
-
#include <boost/thread/shared_mutex.hpp>
namespace Mad {
@@ -71,9 +70,9 @@ class Connection : boost::noncopyable {
Packet::Data header;
- boost::signal1<void, const Packet&> receiveSignal;
- boost::signal0<void> connectedSignal;
- boost::signal0<void> disconnectedSignal;
+ Signals::Signal1<void, const Packet&> receiveSignal;
+ Signals::Signal0<void> connectedSignal;
+ Signals::Signal0<void> disconnectedSignal;
bool receiving;
unsigned long sending;
@@ -172,9 +171,26 @@ class Connection : boost::noncopyable {
bool send(const Packet &packet);
- boost::signal1<void, const Packet&>& signalReceive() {return receiveSignal;}
- boost::signal0<void>& signalConnected() {return connectedSignal;}
- boost::signal0<void>& signalDisconnected() {return disconnectedSignal;}
+ Signals::Connection connectSignalReceive(const Signals::Signal1<void, const Packet&>::slot_type &slot) {
+ return receiveSignal.connect(slot);
+ }
+ void disconnectSignalReceive(const Signals::Connection &connection) {
+ receiveSignal.disconnect(connection);
+ }
+
+ Signals::Connection connectSignalConnected(const Signals::Signal0<void>::slot_type &slot) {
+ return connectedSignal.connect(slot);
+ }
+ void disconnectSignalConnected(const Signals::Connection &connection) {
+ connectedSignal.disconnect(connection);
+ }
+
+ Signals::Connection connectSignalDisconnected(const Signals::Signal0<void>::slot_type &slot) {
+ return disconnectedSignal.connect(slot);
+ }
+ void disconnectSignalDisconnected(const Signals::Connection &connection) {
+ disconnectedSignal.disconnect(connection);
+ }
};
}