internal static Stats MapStats()

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
        };
    }