| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | /* *  ctkEventDefinitions.h *  ctkEventBus * *  Created by Paolo Quadrani on 27/03/09. *  Copyright 2009 B3C. All rights reserved. * *  See Licence at: http://tiny.cc/QXJ4D * */#ifndef CTKEVENTDEFINITIONS_H#define CTKEVENTDEFINITIONS_H// Qt includes#include <QByteArray>#include <QList>#include <QMap>#include <QVariant>#include <QString>#include <QStringList>#include <QHash>#include <QThread>#include <QThreadPool>#include <QObject>#include <QDebug>#include "org_commontk_eventbus_Export.h"//defines#define TOPIC "event.topics"#define TYPE "EventType"#define SIGTYPE "SignatureType"#define OBJECT "ObjectPointer"#define SIGNATURE "Signature"class ctkBusEvent;#define ctkRegisterLocalSignal(topic, sender, signature) \    {\        ctkBusEvent *properties = new ctkBusEvent(topic, ctkEventBus::ctkEventTypeLocal, ctkEventBus::ctkSignatureTypeSignal, static_cast<QObject*>(sender), signature); \        bool ok = ctkEventBus::ctkEventBusManager::instance()->addEventProperty(*properties);\        if(!ok) {\            qWarning("%s", tr("Some problem occourred during the signal registration with ID '%1'.").arg(topic).toLatin1().data());\            if(properties) {delete properties; properties = NULL;} \            }\    }#define ctkRegisterRemoteSignal(topic, sender, signature) \    {\        ctkBusEvent *properties = new ctkBusEvent(topic, ctkEventBus::ctkEventTypeRemote, ctkEventBus::ctkSignatureTypeSignal, static_cast<QObject*>(sender), signature); \        bool ok =  ctkEventBus::ctkEventBusManager::instance()->addEventProperty(*properties);\        if(!ok) {\            qWarning("%s", tr("Some problem occourred during the signal registration with ID '%1'.").arg(topic).toLatin1().data());\            if(properties) {delete properties; properties = NULL;} \        }\    }#define ctkRegisterLocalCallback(topic, observer, signature) \    {\        ctkBusEvent *properties = new ctkBusEvent(topic, ctkEventBus::ctkEventTypeLocal, ctkEventBus::ctkSignatureTypeCallback, static_cast<QObject*>(observer), signature); \        bool ok =  ctkEventBus::ctkEventBusManager::instance()->addEventProperty(*properties);\        if(!ok) {\            qWarning("%s", tr("Some problem occourred during the callback registration with ID '%1'.").arg(topic).toLatin1().data());\            if(properties) {delete properties; properties = NULL;} \        }\    }#define ctkRegisterRemoteCallback(topic, sender, signature) \    {\        ctkBusEvent *properties = new ctkBusEvent(topic, ctkEventBus::ctkEventTypeRemote, ctkEventBus::ctkSignatureTypeCallback, static_cast<QObject*>(sender), signature); \        bool ok =  ctkEventBus::ctkEventBusManager::instance()->addEventProperty(*properties);\        if(!ok) {\            qWarning("%s", tr("Some problem occourred during the callback registration with ID '%1'.").arg(topic).toLatin1().data());\            if(properties) {delete properties; properties = NULL;} \        }\    }namespace ctkEventBus {//forward classesclass ctkNetworkConnector;/// Hash table that associate the communication protocol with the corresponding network connector class (Eg. XMLRPC, ctkEventBus::ctkNetworkConnectorQXMLRPC)typedef QHash<QString, ctkNetworkConnector *> ctkNetworkConnectorHash;/// typedef that represents dictionary entries ( key  , value )typedef QHash<QString, QVariant> ctkEventHash;///< Enum that identify the ctkEventType's type: Local or Remote.typedef enum {    ctkEventTypeLocal,    ctkEventTypeRemote} ctkEventType;///< Enum that identify the mafSignatureType's type: Signal or Callback.typedef enum {    ctkSignatureTypeSignal = 0,    ctkSignatureTypeCallback = 1} ctkSignatureType;/// List of the arguments to be sent through the event bus.typedef QList<QGenericArgument> ctkEventArgumentsList;typedef ctkEventArgumentsList * ctkEventArgumentsListPointer;#define ctkEventArgument(type, data) QArgument<type >(#type, data)#define ctkGenericReturnArgument QGenericReturnArgument#define ctkEventReturnArgument(type, data) QReturnArgument<type >(#type, data)/// Types definitions for events' hash (to be more readable).typedef QHash<QString, ctkBusEvent *> ctkEventsHashType;/// type definition for observers' properties list to be stored into the event's hash.typedef QList<ctkBusEvent *> ctkEventItemListType;/// map which represent list of function to be registered in the server, with parameterstypedef QMap<QString, QList<QVariant::Type> >  mafRegisterMethodsMap;} // namespace ctkEventBusQ_DECLARE_METATYPE(ctkEventBus::ctkEventArgumentsListPointer);Q_DECLARE_METATYPE(ctkEventBus::mafRegisterMethodsMap);#endif // CTKEVENTDEFINITIONS_H
 |