in providers/linux/vmstat.go [44:69]
func parseVMStat(content []byte) (*types.VMStatInfo, error) {
var vmStat types.VMStatInfo
refValues := reflect.ValueOf(&vmStat).Elem()
err := parseKeyValue(content, ' ', func(key, value []byte) error {
// turn our []byte value into an int
val, err := parseBytesOrNumber(value)
if err != nil {
return fmt.Errorf("failed to parse %v value of %v: %w", string(key), string(value), err)
}
idx, ok := vmstatTagToFieldIndex[string(key)]
if !ok {
return nil
}
sval := refValues.Field(idx)
if sval.CanSet() {
sval.SetUint(val)
}
return nil
})
return &vmStat, err
}