summaryrefslogtreecommitdiffstats
path: root/src/Net/Signals/Signal2.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/Signals/Signal2.h')
-rw-r--r--src/Net/Signals/Signal2.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Net/Signals/Signal2.h b/src/Net/Signals/Signal2.h
index 374a239..3fb9315 100644
--- a/src/Net/Signals/Signal2.h
+++ b/src/Net/Signals/Signal2.h
@@ -20,19 +20,23 @@
#ifndef MAD_NET_SIGNALS_SIGNAL2_H_
#define MAD_NET_SIGNALS_SIGNAL2_H_
-#include "SignalBase.h"
+#include "GenericSignal.h"
+#include <Net/ThreadManager.h>
+
+#include <boost/function.hpp>
namespace Mad {
namespace Net {
namespace Signals {
template <typename T1, typename T2>
-class Signal2 : public SignalBase<boost::signal2<void, T1, T2>, boost::function2<void, T1, T2> > {
+class Signal2 : public GenericSignal<boost::function2<void, T1, T2> > {
public:
void emit(T1 arg1, T2 arg2) {
- boost::lock_guard<boost::mutex> lock(SignalBase<boost::signal2<void, T1, T2>, boost::function2<void, T1, T2> >::mutex);
+ boost::lock_guard<boost::mutex> lock(this->mutex);
- SignalBase<boost::signal2<void, T1, T2>, boost::function2<void, T1, T2> >::signal(arg1, arg2);
+ for(typename std::map<Connection, typename GenericSignal<boost::function2<void, T1, T2> >::slot_type>::iterator handler = this->handlers.begin(); handler != this->handlers.end(); ++handler)
+ Net::ThreadManager::get()->pushWork(boost::bind(handler->second, arg1, arg2));
}
};