106 lines
2.8 KiB
C++
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 */
|
|
|