ctkEventBusImpl_p.h

Go to the documentation of this file.
00001 #ifndef CTKEVENTBUSIMPL_H
00002 #define CTKEVENTBUSIMPL_H
00003 
00004 #include <EventBus/ctkEventBus.h>
00005 
00006 #include <QList>
00007 #include <QHash>
00008 #include <QSet>
00009 
00010 class ctkEventHandlerWrapper;
00011 
00012 class ctkEventBusImpl : public QObject,
00013                      public ctkEventBus
00014 {
00015   Q_OBJECT
00016   Q_INTERFACES(ctkEventBus)
00017 
00018 public:
00019 
00020   static ctkEventBusImpl* instance();
00021 
00022   void postEvent(const ctkEvent& event);
00023   void sendEvent(const ctkEvent& event);
00024 
00025   void publishSignal(const QObject* publisher, const char* signal);
00026 
00027   void subscribeSlot(const QObject* subscriber, const char* member, const Properties& properties);
00028 
00029 protected:
00030 
00031   typedef QList<ctkEventHandlerWrapper*> HandlerList;
00032 
00033   HandlerList globalWildcard;
00034 
00035   QHash<QString, HandlerList> topicName;
00036 
00037   void dispatchEvent(const ctkEvent& event, bool isAsync);
00038 
00039   void bucket(ctkEventHandlerWrapper* wrapper);
00040 
00041   QSet<ctkEventHandlerWrapper*> handlers(const QString& topic);
00042 
00043 private:
00044 
00045   ctkEventBusImpl();
00046 };
00047 
00048 #endif // CTKEVENTBUSIMPL_H
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines