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

73 lines
1.8 KiB
C++

/*
* File: PartitionDetector.h
* Author: Grit Schneider
*
* Created on August 2, 2012, 3:31 PM
*/
#pragma once
#ifndef PARTITIONDETECTOR_H
#define PARTITIONDETECTOR_H
#include "common/MoversightService.h"
namespace ubeeme {
namespace moversight {
class PartitionTimer;
class NDMessage;
class NDMessageConfirm;
class MembershipService;
class NeighborhoodDetector;
/**
* @class PartitionDetector
* @ingroup Moversight
* @author Grit Schneider
* @brief Implements a partitionDetector.
*/
class PartitionDetector : public MoversightService {
friend class PartitionTimer;
friend class NetworkFailureDetector;
public:
PartitionDetector(Dispatcher & d);
virtual ~PartitionDetector();
virtual void initialise();
virtual void finalise();
void handlePartitionTimer(PartitionTimer * timer);
void handleNDMessage(const NDMessage * ndm);
void handleNDCMessage(const NDMessageConfirm * ndmc);
PartitionDetector & operator = (PartitionDetector & other);
bool isPeerMemberOfOldGroup(PeerID searchedPeer);
void resetAllStates();
bool checkIfConnectionLost();
void detectPartition();
void determineAndSendToMissingMastersSlaves();
private:
void stopAndDeletePartitionTimer() ;
void addingMissingMastersSlaves();
void addingPendingSlavesFromOtherClusters();
MembershipService & getMembershipService();
PartitionTimer * partitionTimer;
NeighborhoodDetector * nd;
};
}
}
#endif /* PARTITIONDETECTOR_H */