| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | /* *  ctkEventDispatcherRemote.cpp *  ctkEventBus * *  Created by Paolo Quadrani on 27/03/09. *  Copyright 2009 B3C. All rights reserved. * *  See Licence at: http://tiny.cc/QXJ4D * */#include "ctkEventDispatcherRemote.h"#include "ctkBusEvent.h"#include "ctkNetworkConnector.h"using namespace ctkEventBus;ctkEventDispatcherRemote::ctkEventDispatcherRemote() : ctkEventDispatcher(), m_NetworkConnectorServer(NULL), m_NetworkConnectorClient(NULL) {    this->initializeGlobalEvents();}ctkEventDispatcherRemote::~ctkEventDispatcherRemote() {    if(m_NetworkConnectorServer) delete m_NetworkConnectorServer;    m_NetworkConnectorServer = NULL;    if(m_NetworkConnectorClient) delete m_NetworkConnectorClient;    m_NetworkConnectorClient = NULL;}ctkNetworkConnector *ctkEventDispatcherRemote::networkConnectorServer() {    return m_NetworkConnectorServer;}ctkNetworkConnector *ctkEventDispatcherRemote::networkConnectorClient() {    return m_NetworkConnectorClient;}void ctkEventDispatcherRemote::initializeGlobalEvents() {    ctkBusEvent *properties = new ctkBusEvent("ctk/remote/eventBus/globalUpdate",ctkEventTypeRemote,ctkSignatureTypeSignal,this,"notifyDefaultEvent()");    this->registerSignal(*properties);    // events like remoteCommunicationDone or failed represents th bridge events between a remote communication    // and the possibility to call local slots. The notifyEvent local sends events inside the local objects registered as observers    // through the event bus manager while the remote notification (ctkEventTypeRemote) uses the network connector.}void ctkEventDispatcherRemote::setNetworkConnectorServer(ctkNetworkConnector *connector) {    if(m_NetworkConnectorServer == NULL) {        m_NetworkConnectorServer = connector->clone();        m_NetworkConnectorServer->initializeForEventBus();    } else {        if(m_NetworkConnectorServer->protocol() != connector->protocol()) {            delete m_NetworkConnectorServer; //if there will be multiprotocol , here there will be a problem for thread app            m_NetworkConnectorServer = connector->clone();            m_NetworkConnectorServer->initializeForEventBus();       }   }}void ctkEventDispatcherRemote::setNetworkConnectorClient(ctkNetworkConnector *connector) {     if(m_NetworkConnectorClient == NULL) {         m_NetworkConnectorClient = connector->clone();         m_NetworkConnectorClient->initializeForEventBus();     } else {         if(m_NetworkConnectorClient->protocol() != connector->protocol()) {             delete m_NetworkConnectorClient; //if there will be multiprotocol , here there will be a problem for thread app             m_NetworkConnectorClient = connector->clone();             m_NetworkConnectorClient->initializeForEventBus();        }    }}void ctkEventDispatcherRemote::notifyEvent(ctkBusEvent &event_dictionary, ctkEventArgumentsList *argList, ctkGenericReturnArgument *returnArg) const {    //Q_UNUSED(event_dictionary);    //Q_UNUSED(argList);    Q_UNUSED(returnArg);    // Call the notifyEventRemote converting the arguments...    m_NetworkConnectorClient->send(event_dictionary[TOPIC].toString(), argList);}
 |