From 045a006fcdac304b24e56d44e2879e1dd427e258 Mon Sep 17 00:00:00 2001 From: Furkan Date: Sun, 30 Oct 2022 00:48:05 +0300 Subject: [PATCH] Separate /proc/stat parsing logic Signed-off-by: Furkan --- stat.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/stat.go b/stat.go index 2c0116ede..586af48af 100644 --- a/stat.go +++ b/stat.go @@ -170,12 +170,23 @@ func (fs FS) Stat() (Stat, error) { if err != nil { return Stat{}, err } - - stat := Stat{ - CPU: make(map[int64]CPUStat), + procStat, err := parseStat(bytes.NewReader(data), fileName) + if err != nil { + return Stat{}, err } + return procStat, nil +} + +// parseStat parses the metrics from /proc/[pid]/stat. +func parseStat(r io.Reader, fileName string) (Stat, error) { + var ( + scanner = bufio.NewScanner(r) + stat = Stat{ + CPU: make(map[int64]CPUStat), + } + err error + ) - scanner := bufio.NewScanner(bytes.NewReader(data)) for scanner.Scan() { line := scanner.Text() parts := strings.Fields(scanner.Text())