Skip to content

file /Users/ios_developer/workspace/coldwave-os/build/_deps/libcoldwave-src/flake/SyncManager.h

Types

Name
classSyncManager
enum classSyncType

Types Documentation

enum SyncType

EnumeratorDescription
EVENT
REGULAR

Source code

cpp
#ifndef SYNC_BUDGET_MANAGER_H
#define SYNC_BUDGET_MANAGER_H

#include <cstdint>
#include <chrono>

enum class SyncType { EVENT, REGULAR };

class SyncManager {
    private:
    // Budget parameters (in bytes)
    unsigned monthlyBudget;

    // Usage tracking (in bytes)
    unsigned usageSoFar;
    unsigned regularUsageSoFar;

    // Adaptive sync interval (in seconds)
    int baseSyncInterval;
    int syncInterval;
    int regularSyncCount;


    // Time tracking
    std::chrono::system_clock::time_point lastRegularSync;
    std::chrono::system_clock::time_point monthStart;

    static std::chrono::system_clock::time_point getCurrentMonthStart();

    public:
    // Constructor
    SyncManager(unsigned monthlyBudget_, unsigned remainingBudget_, int baseSyncInterval_, double eventBudgetFraction = 0.5);

    // Get total remaining budget
    [[nodiscard]] unsigned getRemainingTotalBudget() const;
    [[nodiscard]] unsigned getTotalBudget() const;

    [[nodiscard]] bool canSyncRegular(unsigned expectedCost) const;

    void recordSync(unsigned actualDataConsumed);
    void recordDataTransfer(unsigned actualDataConsumed);

    // Reset budget for new month
    void resetMonthlyBudget();

    // Get current sync interval (for diagnostics)
    int getCurrentSyncInterval() const;

    private:
    // Adjust budget dynamically based on real-time consumption
    void adjustBudgetAllocation();
    void adjustSyncInterval();
};

#endif // SYNC_BUDGET_MANAGER_H