func parseVMStat()

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
}