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);
- }
|