update20140630
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
* File: MoversightSimulationPeerStateVisualization.cc
|
||||
* Author: jgaebler
|
||||
*
|
||||
* Created on November 1, 2012, 4:30 PM
|
||||
*/
|
||||
|
||||
#include "MoversightSimulationPeerStateVisualization.h"
|
||||
#include "Moversight.h"
|
||||
#include "MoversightService.h"
|
||||
#include "ModuleAccess.h"
|
||||
#include "Dispatcher.h"
|
||||
|
||||
#include "event/MoversightEvent.h"
|
||||
#include "event/events/ConnectionLostEvent.h"
|
||||
#include "event/events/ConnectionReEstablishedEvent.h"
|
||||
#include "ms/events/PeerJoinedEvent.h"
|
||||
#include "ms/events/PeerLeftEvent.h"
|
||||
#include "fd/events/PeerReconnectedEvent.h"
|
||||
#include "mt/events/PendingPeersEvent.h"
|
||||
|
||||
namespace ubeeme {
|
||||
namespace moversight {
|
||||
|
||||
#undef DEBUG
|
||||
#define DEBUG(msg) if (module.isPrintDebugVISU()){ MOV_DEBUG <<"VISU@"<<getLocalID()<<" "<<msg<<endl; }
|
||||
|
||||
/**
|
||||
* @brier Constructor
|
||||
* @param mod A reference to the omnet module, which is located in the module that should be decorated.
|
||||
* @param dis A reference to the moversight dispatcher.
|
||||
*/
|
||||
MoversightSimulationPeerStateVisualization::MoversightSimulationPeerStateVisualization(Dispatcher & dis)
|
||||
: MoversightService(dis, "VISU") {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Destructor.
|
||||
*/
|
||||
MoversightSimulationPeerStateVisualization::~MoversightSimulationPeerStateVisualization() {
|
||||
finalise();
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::initialise() {
|
||||
dispatcher.subscribe<MoversightEvent>(this);
|
||||
dispatcher.subscribe<ConnectionLostEvent>(this);
|
||||
dispatcher.subscribe<ConnectionReEstablishedEvent>(this);
|
||||
dispatcher.subscribe<PeerJoinedEvent>(this);
|
||||
dispatcher.subscribe<PeerLeftEvent>(this);
|
||||
dispatcher.subscribe<PeerReconnectedEvent>(this);
|
||||
dispatcher.subscribe<PendingPeersEvent>(this);
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::finalise() {
|
||||
dispatcher.unsubscribeAll(this);
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const MoversightEvent& e) {
|
||||
updateSimUI();
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const ConnectionLostEvent& e) {
|
||||
module.bubble( "connection lost");
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const ConnectionReEstablishedEvent& e) {
|
||||
module.bubble( "connection re-established");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handle PeerJoinedEvent.
|
||||
*
|
||||
* Draw a bubble with information about the joined peer.
|
||||
*
|
||||
* @param e The event.
|
||||
*/
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const PeerJoinedEvent& e) {
|
||||
std::ostringstream buf;
|
||||
buf << "peer " << e.getPeerID() << " (" << e.getDescription().getDescription() << ") added";
|
||||
module.bubble(buf.str().c_str());
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const PeerLeftEvent& e) {
|
||||
std::ostringstream buf;
|
||||
buf << "peer " << e.getPeer().getPeerID() << " left the group";
|
||||
module.bubble(buf.str().c_str());
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const PeerReconnectedEvent& e) {
|
||||
std::ostringstream buf;
|
||||
buf << "peer " << e.getPeerID() << " reconnect to group";
|
||||
module.bubble(buf.str().c_str());
|
||||
}
|
||||
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::handleEvent( const PendingPeersEvent& e) {
|
||||
std::ostringstream buf;
|
||||
buf << "peers " << e.getPeerIDList() << " are pending";
|
||||
module.bubble(buf.str().c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns the display string of the parent module used to display the moversight state.
|
||||
* @return The display string of the parent module.
|
||||
*/
|
||||
cDisplayString&
|
||||
MoversightSimulationPeerStateVisualization::getMoversightDisplayString() {
|
||||
return module.getParentModule()->getDisplayString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Updates the UI of the simulation.
|
||||
*/
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::updateSimUI() {
|
||||
updateRole();
|
||||
updateState();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Updates the role of the peer.
|
||||
*/
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::updateRole() {
|
||||
|
||||
cDisplayString & dis = getMoversightDisplayString();
|
||||
|
||||
//display role
|
||||
if (dispatcher.getMembershipService().getLocalPeer().isMaster()) {
|
||||
dis.setTagArg("i", 0, "device/laptop");
|
||||
}
|
||||
else {
|
||||
dis.setTagArg("i", 0, "device/pocketpc");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Updates the state of the peer.
|
||||
*/
|
||||
void
|
||||
MoversightSimulationPeerStateVisualization::updateState() {
|
||||
|
||||
cDisplayString & dis = getMoversightDisplayString();
|
||||
|
||||
State state = dispatcher.getMembershipService().getLocalPeer().getState();
|
||||
|
||||
switch (state) {
|
||||
|
||||
case INVITING:
|
||||
case WAITING_FOR_ROSTER:
|
||||
{
|
||||
dis.setTagArg("i2", 0, "status/hourglass");
|
||||
break;
|
||||
}
|
||||
case JOINED:
|
||||
{
|
||||
dis.setTagArg("i2", 0, "status/green");
|
||||
break;
|
||||
}
|
||||
case LEAVING:
|
||||
{
|
||||
dis.setTagArg("i2", 0, "status/down");
|
||||
break;
|
||||
}
|
||||
case PENDING:
|
||||
{
|
||||
dis.setTagArg("i2", 0, "status/excl3");
|
||||
break;
|
||||
}
|
||||
case EXCLUDED:
|
||||
{
|
||||
dis.setTagArg("i", 0, "block/process");
|
||||
dis.setTagArg("i2", 0, "status/noentry");
|
||||
break;
|
||||
}
|
||||
case DEAD:
|
||||
{
|
||||
dis.setTagArg("i", 0, "block/process");
|
||||
dis.setTagArg("i2", 0, "status/red");
|
||||
break;
|
||||
}
|
||||
default: // DISJOINED case
|
||||
{
|
||||
dis.setTagArg("i", 0, "block/process");
|
||||
dis.setTagArg("i2", 0, "status/off");
|
||||
break;
|
||||
}
|
||||
}//End switch
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user