Files
spore/include/spore/services/MonitoringService.h

46 lines
1.2 KiB
C++

#pragma once
#include "spore/Service.h"
#include "spore/util/CpuUsage.h"
#include <functional>
class MonitoringService : public Service {
public:
MonitoringService(CpuUsage& cpuUsage);
void registerEndpoints(ApiServer& api) override;
void registerTasks(TaskManager& taskManager) override;
const char* getName() const override { return "Monitoring"; }
// System resource information
struct SystemResources {
// CPU information
float currentCpuUsage;
float averageCpuUsage;
unsigned long measurementCount;
bool isMeasuring;
// Memory information
size_t freeHeap;
size_t totalHeap;
// Filesystem information
size_t totalBytes;
size_t usedBytes;
size_t freeBytes;
float usagePercent;
// System uptime
unsigned long uptimeMs;
unsigned long uptimeSeconds;
};
// Get current system resources
SystemResources getSystemResources() const;
private:
void handleResourcesRequest(AsyncWebServerRequest* request);
// Helper methods
void getFilesystemInfo(size_t& totalBytes, size_t& usedBytes) const;
CpuUsage& cpuUsage;
};