Files
2026-08-08 13:54:26 -07:00

55 lines
1.4 KiB
C++

#pragma once
#include "metricrecord.h"
class idMetricsFramework {
public:
class MachineInfo : public idMetricRecord {
public:
MachineInfo();
void WriteHeader(idMetricFile* metricFile) override;
void SerializeEntry(idMetricFile* metricFile) override;
};
idMetricsFramework();
~idMetricsFramework();
std::uint64_t GetCurrentSystemTime() const;
int GetPushFrame();
void MetricsRecord();
void MetricsStop();
idMetricFile* GetFileHandle(const idStr& filename);
bool IsRecording() const { return isRecording; }
void SetOutputDirectory(const char* directory);
void SetHeartbeatMilliseconds(int milliseconds);
private:
void OpenMetricFile(const idStr& filename, idMetricFile& metricFile);
std::uint64_t currentPushTime;
std::uint64_t currentWriteTime;
int currentPushFrame;
int lastCheckedPushFrame;
int currentState;
int baseHandle;
bool isRecording;
struct recoveredHashTable_t {
void** heads;
int tableSize;
int numEntries;
int tableSizeMask;
} fileTable;
idMetricFile stateStream;
};
extern idMetricsFramework metricsFrameworkLocal;
#if INTPTR_MAX == INT32_MAX
static_assert(sizeof(idMetricsFramework::MachineInfo) == 68,
"Recovered MachineInfo ABI changed");
static_assert(sizeof(idMetricsFramework) == 72,
"Recovered idMetricsFramework ABI changed");
#endif