MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / parseMemInfo

Function parseMemInfo

metric/meminfo_linux.go:40–69  ·  view source on GitHub ↗
(r io.Reader)

Source from the content-addressed store, hash-verified

38}
39
40func parseMemInfo(r io.Reader) (map[string]float64, error) {
41 var (
42 memInfo = map[string]float64{}
43 scanner = bufio.NewScanner(r)
44 re = regexp.MustCompile(`\((.*)\)`)
45 )
46
47 for scanner.Scan() {
48 line := scanner.Text()
49 parts := strings.Fields(line)
50 fv, err := strconv.ParseFloat(parts[1], 64)
51 if err != nil {
52 return nil, fmt.Errorf("invalid value in meminfo: %s", err)
53 }
54 key := parts[0][:len(parts[0])-1] // remove trailing : from key
55 // Active(anon) -> Active_anon
56 key = re.ReplaceAllString(key, "_${1}")
57 switch len(parts) {
58 case 2: // no unit
59 case 3: // has unit, we presume kB
60 fv *= 1024
61 key = key + "_bytes"
62 default:
63 return nil, fmt.Errorf("invalid line in meminfo: %s", line)
64 }
65 memInfo[key] = fv
66 }
67
68 return memInfo, scanner.Err()
69}

Callers 2

getMemInfoMethod · 0.85
TestMemInfoFunction · 0.85

Calls 2

ErrorfMethod · 0.80
ScanMethod · 0.45

Tested by 1

TestMemInfoFunction · 0.68