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

134 lines
4.6 KiB
C++

/*
* File: MoversightService.h
* Author: jgaebler
*
* Created on May 27, 2011, 9:19 AM
*/
#pragma once
#ifndef MOVERSIGHTSERVICE_H
#define MOVERSIGHTSERVICE_H
#include "common/Defines.h"
#include "common/container/PeerList.h"
#include "common/container/PeerIDList.h"
#include "common/transport/TransportAddress.h"
#include "event/ObjectListener.h"
namespace ubeeme {
namespace moversight {
class Dispatcher;
class Moversight;
class MoversightMessage;
class NFDMessage;
class MoversightTimer;
class VirtualLogicalTime;
class ExteriorMessage;
class UnicastMessage;
class MulticastMessage;
class InteriorMessage;
/**
* @class MoversightService
* @author Jan Gäbler
* @ingroup Moversight
* @brief Defines a common interface for a moversight module.
*/
class MoversightService : public ObjectListener {
friend class MoversightTimer;
public:
MoversightService(Dispatcher & d, std::string name);
MoversightService(const MoversightService & other);
virtual ~MoversightService();
/**
* @brief Initialize the service. Called to setup the defined service.
*/
virtual void initialise() = 0;
/**
* @brief Finalize the module. Clean and stop the running module service.
*/
virtual void finalise() = 0;
MoversightService & operator=(const MoversightService & other);
virtual const PeerState & getLocalPeerState() const;
virtual const State & getLocalState() const;
virtual const SubState & getLocalSubState() const;
virtual const StateOperation & getLocalStateOperation() const;
virtual const State & getState(PeerID id) const;
virtual const SubState & getSubState(PeerID id) const;
virtual const StateOperation & getStateOperation(PeerID id) const;
virtual const VirtualLogicalTime & getCurrentLogicalTime() const;
virtual const VirtualLogicalTime & getLastSeenLogicalTime() const;
virtual ViewID getViewID() const;
virtual ViewID getLastViewID() const;
protected:
virtual PeerIDList getMasterIDList();
virtual Peer & getLocalPeer();
virtual const Peer & getLocalPeer() const;
virtual PeerID getLocalID();
virtual TransportAddress const & getLocalAddress();
virtual PeerID getLocalMasterID() const;
virtual bool isLocalPeerMaster();
virtual void setLocalState(const State & s);
virtual void setLocalSubState(const SubState & sub);
virtual void setLocalStateOperation(const StateOperation & op);
virtual void setState(PeerID id, const State & s);
virtual void setSubState(PeerID id, const SubState & sub);
virtual void setStateOperation(PeerID id, const StateOperation & op);
virtual PeerIDList createReceiverList(PeerID sourcePeerID);
/**
* Common interface for PDU send operations
*/
virtual void sendTo(const MoversightMessage& msg, const TransportAddress& dest, const bool reliable = false);
virtual void sendTo(const MoversightMessage& msg, const PeerID dest, const bool reliable = false);
virtual void sendTo(const MoversightMessage& msg, const PeerIDList& peers, const bool reliable = false);
virtual void sendToCluster(const MoversightMessage& msg, const bool reliable = false);
virtual void sendToMaster(const MoversightMessage& msg, const bool reliable = false);
virtual void sendToAllMasters(const MoversightMessage& msg, const bool reliable = false);
virtual void sendToLastView(const MoversightMessage& msg, const PeerID dest, const bool reliable = false);
virtual void sendToLastView(const MoversightMessage& msg, const PeerIDList& peers, const bool reliable = false);
protected:
/**
* @brief Reference to the moversight dispatcher.
*/
Dispatcher & dispatcher;
/**
* @brief Reference to the moversight module.
*/
Moversight & module;
private:
virtual PeerState & getLocalPeerState();
virtual PeerState & getPeerState(PeerID id);
virtual const PeerState & getPeerState(PeerID id) const;
};
}
}
#endif /* MOVERSIGHTSERVICE_H */