| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- /*
 
-  *  ctkEventBusManager.h
 
-  *  ctkEventBus
 
-  *
 
-  *  Created by Paolo Quadrani on 27/03/09.
 
-  *  Copyright 2010 B3C. All rights reserved.
 
-  *
 
-  *  See Licence at: http://tiny.cc/QXJ4D
 
-  *
 
-  */
 
- #ifndef CTKEVENTBUSMANAGER_H
 
- #define CTKEVENTBUSMANAGER_H
 
- // Includes list
 
- #include "ctkEventDefinitions.h"
 
- #include "ctkEventDispatcherLocal.h"
 
- #include "ctkEventDispatcherRemote.h"
 
- #include "ctkBusEvent.h"
 
- namespace ctkEventBus {
 
- // Class forwarding list
 
- /**
 
-  Class name: ctkEventBusManager
 
-  This singletone provides the access point of the Communication Bus for MAF3 framework.
 
-  ctkEventBusManager defines also the mafId maf.local.eventBus.globalUpdate to be used as generic update notification mechanism that the event bus can send to all the observers.
 
-  */
 
- class org_commontk_eventbus_EXPORT ctkEventBusManager : public QObject {
 
-     Q_OBJECT
 
- public:
 
-     /// Return an instance of the event bus.
 
-     static ctkEventBusManager *instance();
 
-     /// Add a new event property (observer or event) to the event bus hash.
 
-     /** Return true if observer has beed added correctly, false otherwise.
 
-     This method check before adding a new observer that it has not already been inserted into the events' Hash with the same id and callback signature.*/
 
-     bool addEventProperty(ctkBusEvent &props) const;
 
-     /// Remove the event property from the event bus hash.
 
-     bool removeEventProperty(ctkBusEvent &props) const;
 
-     /// Remove the object passed as argument from the observer's hash.
 
-     /** This method allows to remove from the observer's hash the object
 
-     passed as argument. If no topic is specified, the observer will be removed from all
 
-     the topic it was listening, otherwise it will be disconnected only from the given topic.*/
 
-     void removeObserver(const QObject *obj, const QString topic = "", bool qt_disconnect = true);
 
-     /// Remove the object passed as argument from the signal emitter's hash.
 
-     /** This method allows to remove from the signal emitter's hash the object
 
-     passed as argument. If no topic is specified, the emitter will be removed from all
 
-     the topic it was emitting signals, otherwise it will be removed only from the given topic.*/
 
-     void removeSignal(const QObject *obj, QString topic = "", bool qt_disconnect = true);
 
-     /// Notify events associated to the given id locally to the application.
 
-     void notifyEvent(ctkBusEvent &event_dictionary, ctkEventArgumentsList *argList = NULL, ctkGenericReturnArgument *returnArg = NULL) const;
 
-     /// Notify event associated to the given id locally to the application.
 
-     void notifyEvent(const QString topic, ctkEventType ev_type = ctkEventTypeLocal, ctkEventArgumentsList *argList = NULL, ctkGenericReturnArgument *returnArg = NULL) const;
 
-     /// Enable/Disable event logging to allow dumping events notification into the selected logging output stream.
 
-     void enableEventLogging(bool enable = true);
 
-     /// When logging is enabled, allows logging events releted to specific id (require a valid topic).
 
-     void logEventTopic(const QString topic);
 
-     /// When enabled, allows logging all events. It reset the value for m_LogEventId to -1 (the default)
 
-     void logAllEvents();
 
-     /// Destroy the singleton instance. To be called at the end of the application.
 
-     void shutdown();
 
-     /// initialize NetworkConnectors
 
-     void initializeNetworkConnectors();
 
-     /// Retrieve if the signal has been registered previously.
 
-     bool isLocalSignalPresent(const QString topic) const;
 
-     /// Plug a new network connector into the connector hash for the given network protocol (protocol eg. "XMLRPC") (connector_type eg. "ctkEventBus::ctkNetworkConnectorQXMLRPC").
 
-     void plugNetworkConnector(const QString &protocol, ctkNetworkConnector *connector);
 
-     /// Create the server for remote communication according to the given protocol and listen port.
 
-     bool createServer(const QString &communication_protocol, unsigned int listen_port);
 
-     /// Allow to start server listening.
 
-     void startListen();
 
-     /// Create the client for remote communication according to the given protocol, server host and port.
 
-     bool createClient(const QString &communication_protocol, const QString &server_host, unsigned int port);
 
- public Q_SLOTS:
 
-     /// Intercepts objects deletation and detach them from the event bus.
 
-     void detachObjectFromBus();
 
- private:
 
-     /// Object constructor.
 
-     ctkEventBusManager();
 
-     /// Object destructor.
 
-     ~ctkEventBusManager();
 
-     ctkEventDispatcherLocal *m_LocalDispatcher; ///< Dispatcher class which dispatches events locally to the application.
 
-     ctkEventDispatcherRemote *m_RemoteDispatcher; ///< Dispatcher class dispatches events remotely to another applications or via network.
 
-     bool m_EnableEventLogging; ///< Flag to enable/disable logging for event sent.
 
-     QString m_LogEventTopic; ///< Store the current Event_Id to track through the logger.
 
-     ctkNetworkConnectorHash m_NetworkConnectorHash; ///< Hash table used to store the association of network protocols and network connector types.
 
-     bool m_SkipDetach; ///< lifesafe variable to avoid the detach from eventbus.
 
- };
 
- } // namespace ctkEventBus
 
- #endif // CTKEVENTBUSMANAGER
 
 
  |