339 lines
9.6 KiB
C++
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
|
|
}
|
|
}
|
|
}
|