Files
scandocs/uni/masterarbeit/source/moversight/common/UbeemeConnector.cc
2014-06-30 13:58:10 +02:00

339 lines
9.6 KiB
C++

/*
* File: UbeemeConnector.cc
* Author: noackrob
*
* Created on August 12, 2013, 2:48 PM
*/
#include "common/UbeemeConnector.h"
#include "Moversight.h"
#include "Dispatcher.h"
/** @FIXME There will be a type interference if Ubeeme is enabled. */
#if UBEEME
#include "core/event/event_container.h"
#include "core/event/event_sender.h"
#include "app/events/GroupMessage.h"
#include "app/events/GroupCreatedEvent.h"
#include "app/events/GroupClosedEvent.h"
#include "app/events/JoinGroupDoneEvent.h"
#include "app/events/LocalPeerUpdateEvent.h"
#include "app/events/PeerIsPendingEvent.h"
#include "app/events/PeerJoinedEvent.h"
#include "app/events/PeerLeftEvent.h"
#include "app/events/PeerReconnectedEvent.h"
#include "app/events/SplitNotifyEvent.h"
#include "app/events/SplitDoneEvent.h"
#include "app/events/MergeNotifyEvent.h"
#include "app/events/MergeDoneEvent.h"
#include "debug.h"
#endif
#include "event/events/ConnectionLostEvent.h"
#include "event/events/ConnectionReEstablishedEvent.h"
#include "event/events/FlushStartEvent.h"
#include "merge/events/MergeRequestEvent.h"
#include "merge/events/MergeConfirmEvent.h"
#include "merge/events/MergeRejectedEvent.h"
#include "merge/events/MergeAbortEvent.h"
#include "merge/events/MergeDoneEvent.h"
#include "mob/events/UnableToReconnectToGroupEvent.h"
#include "ms/events/GroupCreatedEvent.h"
#include "ms/events/GroupClosedEvent.h"
#include "ms/events/PeerJoinedEvent.h"
#include "ms/events/PeerLeftEvent.h"
#include "ms/events/JoinGroupDoneEvent.h"
#include "ms/events/LocalPeerUpdatedEvent.h"
#include "ms/events/RejoinDoneEvent.h"
#include "ms/events/RejoinFailedEvent.h"
#include "mt/events/PendingPeersEvent.h"
#include "fd/events/PeerReconnectedEvent.h"
#include "split/events/SplitDoneEvent.h"
#include "split/events/SplitAbortEvent.h"
namespace ubeeme {
namespace moversight {
#undef DEBUG
#define DEBUG(msg) if (module.isPrintDebugUC()) MOV_DEBUG << "UC@" << dispatcher.getLocalPeer().getPeerID()<< " " << msg << endl;
/**
* @brief Constructor.
*/
UbeemeConnector::UbeemeConnector(Dispatcher & dis)
: MoversightService(dis, "UbeemeConnector") {
}
/**
* @brief Copy Constructor.
* @param other Service to copy.
*/
UbeemeConnector::UbeemeConnector(const UbeemeConnector & other)
: MoversightService(other) {
operator=(other);
}
/**
* @brief Assignment operator
* @param other The service to copy.
* @return This service with new values.
*/
UbeemeConnector &
UbeemeConnector::operator=(const UbeemeConnector & other) {
return *this;
}
/**
* @brief Destructor.
*/
UbeemeConnector::~UbeemeConnector() {
}
/**
* @brief Initialization.
*/
void
UbeemeConnector::initialise() {
dispatcher.subscribe<ConnectionLostEvent>(this);
dispatcher.subscribe<ConnectionReEstablishedEvent>(this);
dispatcher.subscribe<UnableToReconnectToGroupEvent>(this);
dispatcher.subscribe<GroupCreatedEvent>(this);
dispatcher.subscribe<GroupClosedEvent>(this);
dispatcher.subscribe<PeerJoinedEvent>(this);
dispatcher.subscribe<PeerLeftEvent>(this);
dispatcher.subscribe<PeerReconnectedEvent>(this);
dispatcher.subscribe<PendingPeersEvent>(this);
dispatcher.subscribe<LocalPeerUpdatedEvent>(this);
dispatcher.subscribe<JoinGroupDoneEvent>(this);
dispatcher.subscribe<RejoinDoneEvent>(this);
dispatcher.subscribe<RejoinFailedEvent>(this);
dispatcher.subscribe<FlushStartEvent>(this);
dispatcher.subscribe<SplitDoneEvent>(this);
dispatcher.subscribe<SplitAbortEvent>(this);
dispatcher.subscribe<MergeRequestEvent>(this);
dispatcher.subscribe<MergeConfirmEvent>(this);
dispatcher.subscribe<MergeRejectedEvent>(this);
dispatcher.subscribe<MergeAbortEvent>(this);
dispatcher.subscribe<MergeDoneEvent>(this);
}
/**
* @brief Cleanup.
*/
void
UbeemeConnector::finalise() {
dispatcher.unsubscribeAll(this);
}
/**
* @brief Handle ConnectionLostEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const ConnectionLostEvent & e) {
#if UBEEME
#pragma message("SIGNAL CONNECTION LOST NOT IMPLEMENTED YET")
#endif
}
/**
* @brief Handle ConnectionReEstablishedEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const ConnectionReEstablishedEvent & e) {
#if UBEEME
#pragma message("SIGNAL CONNECTION REESTABLISHED NOT IMPLEMENTED YET")
#endif
}
/**
* @brief Handle UnableToReconnectToGroupEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const UnableToReconnectToGroupEvent & e) {
#if UBEEME
#pragma message("SIGNAL UNABLE TO RECONNECT TO GROUP NOT IMPLEMENTED YET")
#endif
}
/**
* @brief Handle GroupCreatedEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const GroupCreatedEvent & e) {
#if UBEEME
EventContainer ev(new GroupCreatedEvent(getLocalPeer()));
sendEvent(ev);
#endif
}
/**
* @brief Handle GroupClosedEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const GroupClosedEvent & e) {
#if UBEEME
EventContainer ev(new GroupClosedEvent(getLocalPeer()));
sendEvent(ev);
#endif
}
/**
* @brief Handle PeerJoinedEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const PeerJoinedEvent & e) {
#if UBEEME
EventContainer ev(new PeerJoinedEvent(pId, ta, pDesc));
sendEvent(ev);
#endif
}
/**
* @brief Handle PeerLeftEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const PeerLeftEvent & e) {
#if UBEEME
EventContainer ev(new PeerLeftEvent(e->getPeer()));
sendEvent(ev);
#endif
}
/**
* @brief Handle PeerReconnectedEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const PeerReconnectedEvent & e) {
#if UBEEME
EventContainer ev(new PeerReconnectedEvent(e->getPeerID(), e->getTransportAddress()));
sendEvent(ev);
#endif
}
/**
* @brief Handle PendingPeersEvent.
* @param e The event.
*/
void
UbeemeConnector::handleEvent(const PendingPeersEvent & e) {
#if UBEEME
PeerIDList & pList = e->getPeerIDList();
for (size_t i = 0; i < pList.size(); i++) {
EventContainer ev(new PeerIsPendingEvent(pList.get(i), getLocalAddressFromPeer(pList.get(i))));
sendEvent(ev);
}
#endif
}
void
UbeemeConnector::handleEvent(const LocalPeerUpdatedEvent & e) {
#if UBEEME
EventContainer ev(new LocalPeerUpdateEvent(e->getPeer()));
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const JoinGroupDoneEvent & e) {
#if UBEEME
EventContainer ev(new JoinGroupDoneEvent(e->getPeer());
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const RejoinDoneEvent & e) {
#if UBEEME
EventContainer ev(new RejoinDoneEvent();
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const FlushStartEvent & e) {
#if UBEEME
EventContainer ev(new FlushStartEvent());
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const SplitDoneEvent & e) {
#if UBEEME
EventContainer ev(new SplitDoneEvent());
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const SplitAbortEvent & e) {
#if UBEEME
#pragma message ("SPLIT ABORT EVENT NOT IMPLEMENTED YET")
#endif
}
void
UbeemeConnector::handleEvent(const MergeRequestEvent & e) {
#if UBEEME
#pragma message ("MERGE REQUEST EVENT NOT IMPLEMENTED YET")
#endif
}
void
UbeemeConnector::handleEvent(const MergeConfirmEvent & e) {
#if UBEEME
#pragma message ("MERGE CONFIRM EVENT NOT IMPLEMENTED YET")
#endif
}
void
UbeemeConnector::handleEvent(const MergeRejectedEvent & e) {
#if UBEEME
#pragma message ("MERGE REJECT EVENT NOT IMPLEMENTED YET")
#endif
}
void
UbeemeConnector::handleEvent(const MergeAbortEvent & e) {
#if UBEEME
#pragma message ("MERGE ABORT EVENT NOT IMPLEMENTED YET")
#endif
}
void
UbeemeConnector::handleEvent(const MergeDoneEvent & e) {
#if UBEEME
EventContainer ev(new MergeDoneEvent());
sendEvent(ev);
#endif
}
void
UbeemeConnector::handleEvent(const RejoinFailedEvent & e) {
#if UBEEME
EventContainer ev(new RejoinFailedEvent());
sendEvent(ev);
#endif
}
}
}