Appearance
file /Users/ios_developer/workspace/coldwave-os/build/_deps/libcoldwave-src/flake/SyncManager.h
Types
| Name | |
|---|---|
| class | SyncManager |
| enum class | SyncType |
Types Documentation
enum SyncType
| Enumerator | Description |
|---|---|
| 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