parseLinuxMemInfo static method

MemoryInfo parseLinuxMemInfo(
  1. String content
)

Parses /proc/meminfo (Linux) into a MemoryInfo (values are in kB).

Implementation

static MemoryInfo parseLinuxMemInfo(String content) {
  int field(String key) {
    final match = RegExp(
      '^$key:\\s+(\\d+)',
      multiLine: true,
    ).firstMatch(content);
    return match == null ? 0 : (int.tryParse(match.group(1)!) ?? 0) * 1024;
  }

  final total = field('MemTotal');
  var available = field('MemAvailable');
  if (available == 0) {
    available = field('MemFree') + field('Buffers') + field('Cached');
  }
  final used = (total - available).clamp(0, total);
  return MemoryInfo(
    totalBytes: total,
    usedBytes: used,
    availableBytes: available,
  );
}