#pragma once #include #include #include #include #include namespace erebos { class SyncService : public Service { public: SyncService(); virtual ~SyncService(); UUID uuid() const override; void handle(Context &) override; void serverStarted(const class Server &) override; private: void peerWatcher(size_t, const class Peer *); void localStateWatcher(const Head &); const class Server * server; std::mutex headMutex; std::optional> watchedHead; }; }