73 lines
1.8 KiB
C++
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 */
|
|
|