src/ServiceProfiler.EventPipe.Otel/Microsoft.ApplicationInsights.Profiler.Shared/Orchestrations/MetricsProviders/MemInfoItemParser.cs (37 lines of code) (raw):

//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- using System; namespace Microsoft.ApplicationInsights.Profiler.Shared.Orchestrations.MetricsProviders; /// <summary> /// A line parser to parse /proc/meminfo for Linux. /// </summary> internal sealed class MemInfoItemParser { public bool TryParse(string line, out (string name, ulong value, string? unit) metric) { string[] tokens = line.Split([':'], StringSplitOptions.RemoveEmptyEntries); if (tokens?.Length == 2) { string name = tokens[0].Trim(); bool result = TryParseMemInfoValue(tokens[1], out ulong value, out string? unit); metric = (name, value, unit); return result; } else { metric = default; return false; } } internal bool TryParseMemInfoValue(string input, out ulong value, out string? unit) { input = input.Trim(); value = default; unit = default; string[] tokens = input.Split([' '], StringSplitOptions.RemoveEmptyEntries); if (tokens?.Length == 2) { if (ulong.TryParse(tokens[0], out value)) { unit = tokens[1].Trim(); return true; } } return false; } }