in foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs [696:755]
internal static Stats MapStats(ReadOnlySpan<byte> payload)
{
int processId = BinaryPrimitives.ReadInt32LittleEndian(payload[0..4]);
float cpuUsage = BitConverter.ToSingle(payload[4..8]);
float totalCpuUsage = BitConverter.ToSingle(payload[8..12]);
ulong memoryUsage = BinaryPrimitives.ReadUInt64LittleEndian(payload[12..20]);
ulong totalMemory = BinaryPrimitives.ReadUInt64LittleEndian(payload[20..28]);
ulong availableMemory = BinaryPrimitives.ReadUInt64LittleEndian(payload[28..36]);
ulong runTime = BinaryPrimitives.ReadUInt64LittleEndian(payload[36..44]);
ulong startTime = BinaryPrimitives.ReadUInt64LittleEndian(payload[44..52]);
ulong readBytes = BinaryPrimitives.ReadUInt64LittleEndian(payload[52..60]);
ulong writtenBytes = BinaryPrimitives.ReadUInt64LittleEndian(payload[60..68]);
ulong totalSizeBytes = BinaryPrimitives.ReadUInt64LittleEndian(payload[68..76]);
int streamsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[76..80]);
int topicsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[80..84]);
int partitionsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[84..88]);
int segmentsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[88..92]);
ulong messagesCount = BinaryPrimitives.ReadUInt64LittleEndian(payload[92..100]);
int clientsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[100..104]);
int consumerGroupsCount = BinaryPrimitives.ReadInt32LittleEndian(payload[104..108]);
int position = 108;
int hostnameLength = BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
string hostname = Encoding.UTF8.GetString(payload[(position + 4)..(position + 4 + hostnameLength)]);
position += 4 + hostnameLength;
int osNameLength = BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
string osName = Encoding.UTF8.GetString(payload[(position + 4)..(position + 4 + osNameLength)]);
position += 4 + osNameLength;
int osVersionLength = BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
string osVersion = Encoding.UTF8.GetString(payload[(position + 4)..(position + 4 + osVersionLength)]);
position += 4 + osVersionLength;
int kernelVersionLength = BinaryPrimitives.ReadInt32LittleEndian(payload[position..(position + 4)]);
string kernelVersion = Encoding.UTF8.GetString(payload[(position + 4)..(position + 4 + kernelVersionLength)]);
return new Stats
{
ProcessId = processId,
Hostname = hostname,
ClientsCount = clientsCount,
CpuUsage = cpuUsage,
TotalCpuUsage = totalCpuUsage,
MemoryUsage = memoryUsage,
TotalMemory = totalMemory,
AvailableMemory = availableMemory,
RunTime = runTime,
StartTime = DateTimeOffset.FromUnixTimeSeconds((long)startTime),
ReadBytes = readBytes,
WrittenBytes = writtenBytes,
StreamsCount = streamsCount,
KernelVersion = kernelVersion,
MessagesCount = messagesCount,
TopicsCount = topicsCount,
PartitionsCount = partitionsCount,
SegmentsCount = segmentsCount,
OsName = osName,
OsVersion = osVersion,
ConsumerGroupsCount = consumerGroupsCount,
MessagesSizeBytes = totalSizeBytes
};
}