#pragma once #include "colnodapi.h" #include "databaseapi.h" Q_DECLARE_LOGGING_CATEGORY(syncmanager) class SyncManager : public QObject { Q_OBJECT public: explicit SyncManager(bool dryMode, const std::function &onError = nullptr); bool init(); bool run(); private: bool downloadData(); bool prepareData(); bool processData(); void updateLastUpdate(qint64 syncBegin); private: Q_SLOT void saveColnodData(const std::shared_ptr &data); Q_SLOT void saveDatabaseData(const std::shared_ptr &data); Q_SLOT void areDataReady(); signals: void dataReady(); void dataProcessFinished(); void syncFinished(); void error(); private: std::shared_ptr colnod; std::shared_ptr database; serversdk::RequestManager reqMan; serversdk::DatabaseManager dbMan; Timestamp mlastSync; std::shared_ptr colnodData; std::shared_ptr databaseData; std::shared_ptr colnodDataToProcess; std::shared_ptr databaseDataToProcess; int dataAmount = 0; bool mDryMode; std::function onError = nullptr; };