CheckedSignal.h
00001 #ifndef _CHECKEDSIGNAL_H
00002 #define _CHECKEDSIGNAL_H
00003
00004 #include <UniSetTypes.h>
00005 #include <sigc++/sigc++.h>
00006 #include <deque>
00007
00008 class CheckConnection;
00009
00010 typedef std::pair< UniSetTypes::ObjectId,sigc::signal< void,UniSetTypes::ObjectId >* > CheckBackEntry;
00011 typedef std::deque< CheckBackEntry > CheckBackContainer;
00018 class CheckedSignal
00019 {
00020 friend class CheckConnection;
00021 public:
00022 CheckConnection connect( const sigc::slot< void,UniSetTypes::ObjectId >&, UniSetTypes::ObjectId sensorId );
00023 void emit();
00024 ~CheckedSignal();
00025 private:
00026 CheckBackContainer cb;
00027 };
00028
00029 class CheckConnection
00030 {
00031 public:
00032 CheckConnection(CheckedSignal* sig, sigc::connection& conn, UniSetTypes::ObjectId id)
00033 :sid (id), signal(sig), connection(conn) {}
00034
00035 CheckConnection():signal(NULL) {}
00036 ~CheckConnection() {}
00037 void disconnect();
00038
00039 private:
00040 UniSetTypes::ObjectId sid;
00041 CheckedSignal* signal;
00042 sigc::connection connection;
00043 };
00044 #endif