#pragma once #include #include #include #include #include #include #include "SyncSlaveBase.h" class DirEntry; class BuddyResyncerModSyncSlave : public SyncSlaveBase { friend class BuddyResyncer; friend class BuddyResyncJob; public: BuddyResyncerModSyncSlave(BuddyResyncJob& parentJob, MetaSyncCandidateStore* syncCandidates, uint8_t slaveID, const NumNodeID& buddyNodeID); struct Stats { uint64_t objectsSynced; uint64_t errors; }; Stats getStats() { return Stats{ numObjectsSynced.read(), numErrors.read() }; } private: MetaSyncCandidateStore* syncCandidates; AtomicUInt64 numObjectsSynced; AtomicUInt64 numErrors; void syncLoop(); FhgfsOpsErr streamCandidates(Socket& socket); private: static FhgfsOpsErr streamCandidates(Socket* socket, void* context) { return static_cast(context)->streamCandidates(*socket); } };