134 lines
4.6 KiB
C++
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 */
|
|
|