55 lines
1.4 KiB
C++
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
|
|
|