diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-06-04 22:32:56 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-06-04 22:32:56 +0200 |
commit | d3a7b7c10b0ef7a3d8c8ea7f1aef2468702dd8f4 (patch) | |
tree | 5bc2a48eb2a03ae03e321d7d576658eeabad688d /src/Net/Signals/SignalBase.h | |
parent | 0b27c37fe95c6aced613d51a3624f8930a96ad3f (diff) | |
download | mad-d3a7b7c10b0ef7a3d8c8ea7f1aef2468702dd8f4.tar mad-d3a7b7c10b0ef7a3d8c8ea7f1aef2468702dd8f4.zip |
Alte Signal-Implementierung entfernt
Diffstat (limited to 'src/Net/Signals/SignalBase.h')
-rw-r--r-- | src/Net/Signals/SignalBase.h | 43 |
1 files changed, 8 insertions, 35 deletions
diff --git a/src/Net/Signals/SignalBase.h b/src/Net/Signals/SignalBase.h index 9e2de62..ea1b1e9 100644 --- a/src/Net/Signals/SignalBase.h +++ b/src/Net/Signals/SignalBase.h @@ -23,54 +23,27 @@ #include "Connection.h" #include <set> -#include <boost/signals.hpp> -#include <boost/thread/locks.hpp> #include <boost/thread/mutex.hpp> namespace Mad { namespace Net { namespace Signals { -template <typename SignalType, typename FunctionType> class SignalBase : private boost::noncopyable { - public: - typedef boost::slot<FunctionType> slot_type; + private: + friend class Connection; - protected: - typedef SignalType signal_type; + unsigned long connectionId; - std::set<boost::signals::connection> connections; + protected: boost::mutex mutex; - signal_type signal; - - SignalBase() {} - ~SignalBase() { - // Wait for other threads - boost::lock_guard<boost::mutex> lock(mutex); + Connection getNewConnection() { + return Connection(this, connectionId++); } - public: - Connection connect(const slot_type &slot) { - boost::lock_guard<boost::mutex> lock(mutex); - - boost::signals::connection con(signal.connect(slot)); - - connections.insert(con); - return con; - } - - void disconnect(const Connection &connection) { - boost::lock_guard<boost::mutex> lock(mutex); - - std::set<boost::signals::connection>::iterator it = connections.find(connection.connection); - - if(it == connections.end()) - return; - - it->disconnect(); - connections.erase(it); - } + SignalBase() : connectionId(0) {} + virtual ~SignalBase() {} }; } |