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

106 lines
2.8 KiB
C++

/*
* File: Peer.h
* Author: jgaebler
*
* Created on April 27, 2010, 4:57 PM
*/
#pragma once
#ifndef PEER_H
#define PEER_H
#include "Defines.h"
#include "PeerState.h"
#include "PeerResources.h"
#include "app/PeerDescription.h"
#include "common/transport/TransportAddress.h"
namespace ubeeme {
namespace moversight {
class Cluster;
class ClusterReferrer;
class MemberDescription;
/**
*
* @brief Defines a peer within the moversight group communication.
* @ingroup Moversight
* @class Peer
* @author Jan Gäbler
*/
class MOV_EXPORT Peer {
public:
enum ConnectionMode {
CONNECTED,
DISCONNECTED
};
Peer();
Peer(const PeerID pId, const TransportAddress & ta, const PeerState & state, const PeerDescription & desc, const PeerResources & res);
Peer(const MemberDescription & mDesc);
Peer(Peer const & orig);
virtual ~Peer();
const TransportAddress & getLocalAddress() const;
void setLocalAddress(const TransportAddress & ta);
PeerState & getPeerState();
const PeerState & getPeerState() const;
void setPeerState(const PeerState & aState);
const State & getState() const;
void setState(const State & aState);
const SubState & getSubState() const;
void setSubState(const SubState & aSubState);
const StateOperation & getStateOperation() const;
void setStateOperation(const StateOperation & aStateOperation);
const PeerID & getPeerID() const;
void setPeerID(const PeerID & aId);
PeerID getMasterID() const;
ClusterID getClusterID() const;
bool isMaster() const;
void setIsMaster(bool flag);
void setClusterReferrer(ClusterReferrer * cRef);
const ClusterReferrer* clusterReferrer() const;
bool operator==(const Peer & a) const;
bool operator!=(const Peer & a) const;
Peer & operator=(const Peer & rhs);
void setPeerDescription(const PeerDescription & pD);
const PeerDescription & getPeerDescription() const;
void setPeerResources(const PeerResources & value);
const PeerResources & getPeerResources() const;
private:
enum Role {
MASTER,
SLAVE
};
PeerID peerId;
Role role;
TransportAddress ta;
PeerState state;
ClusterReferrer * currCluster;
PeerDescription pDesc;
PeerResources peerResources;
};
}
}
#endif /* PEER_H */