New upstream version 8.1.0
This commit is contained in:
95
fsck/source/components/InternodeSyncer.h
Normal file
95
fsck/source/components/InternodeSyncer.h
Normal file
@@ -0,0 +1,95 @@
|
||||
#ifndef INTERNODESYNCER_H_
|
||||
#define INTERNODESYNCER_H_
|
||||
|
||||
#include <common/app/log/LogContext.h>
|
||||
#include <common/components/ComponentInitException.h>
|
||||
#include <common/nodes/MirrorBuddyGroupMapper.h>
|
||||
#include <common/threading/PThread.h>
|
||||
#include <common/Common.h>
|
||||
|
||||
#include <mutex>
|
||||
|
||||
class InternodeSyncer : public PThread
|
||||
{
|
||||
public:
|
||||
InternodeSyncer();
|
||||
virtual ~InternodeSyncer();
|
||||
|
||||
bool downloadAndSyncNodes(NumNodeIDList& addedStorageNodes,
|
||||
NumNodeIDList& removedStorageNodes, NumNodeIDList& addedMetaNodes,
|
||||
NumNodeIDList& removedMetaNodes);
|
||||
bool downloadAndSyncTargetMappings();
|
||||
bool downloadAndSyncMirrorBuddyGroups();
|
||||
bool downloadAndSyncMetaMirrorBuddyGroups();
|
||||
bool downloadAndSyncTargetStates();
|
||||
|
||||
private:
|
||||
LogContext log;
|
||||
Mutex forceNodesAndTargetStatesUpdateMutex;
|
||||
bool forceNodesAndTargetStatesUpdate;
|
||||
Mutex forceCheckNetworkMutex;
|
||||
bool forceCheckNetwork; // true to force check of network interfaces
|
||||
|
||||
TargetMap originalTargetMap;
|
||||
MirrorBuddyGroupMap originalMirrorBuddyGroupMap;
|
||||
MirrorBuddyGroupMap originalMetaMirrorBuddyGroupMap;
|
||||
|
||||
virtual void run();
|
||||
void syncLoop();
|
||||
void handleNodeChanges(NodeType nodeType, NumNodeIDList& addedNodes,
|
||||
NumNodeIDList& removedNodes);
|
||||
void handleTargetMappingChanges();
|
||||
void handleBuddyGroupChanges();
|
||||
|
||||
bool getAndResetForceCheckNetwork()
|
||||
{
|
||||
const std::lock_guard<Mutex> lock(forceCheckNetworkMutex);
|
||||
|
||||
bool retVal = this->forceCheckNetwork;
|
||||
|
||||
this->forceCheckNetwork = false;
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool checkNetwork();
|
||||
|
||||
Condition serversDownloadedCondition;
|
||||
Mutex serversDownloadedMutex;
|
||||
bool serversDownloaded;
|
||||
|
||||
public:
|
||||
void waitForServers();
|
||||
|
||||
void setForceCheckNetwork()
|
||||
{
|
||||
const std::lock_guard<Mutex> lock(forceCheckNetworkMutex);
|
||||
|
||||
this->forceCheckNetwork = true;
|
||||
}
|
||||
|
||||
private:
|
||||
static void printSyncNodesResults(NodeType nodeType, NumNodeIDList* addedNodes,
|
||||
NumNodeIDList* removedNodes);
|
||||
|
||||
void setForceNodesAndTargetStatesUpdate()
|
||||
{
|
||||
const std::lock_guard<Mutex> lock(forceNodesAndTargetStatesUpdateMutex);
|
||||
|
||||
this->forceNodesAndTargetStatesUpdate = true;
|
||||
}
|
||||
|
||||
bool getAndResetForceNodesAndTargetStatesUpdate()
|
||||
{
|
||||
const std::lock_guard<Mutex> lock(forceNodesAndTargetStatesUpdateMutex);
|
||||
|
||||
bool retVal = this->forceNodesAndTargetStatesUpdate;
|
||||
|
||||
this->forceNodesAndTargetStatesUpdate = false;
|
||||
|
||||
return retVal;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif /* INTERNODESYNCER_H_ */
|
||||
Reference in New Issue
Block a user