func parseConntrackFile()

in pkg/metrics/collector/conntrack.go [165:189]


func parseConntrackFile(r io.Reader) (*conntrackStats, error) {
	scanner := bufio.NewScanner(r)
	if !scanner.Scan() {
		return nil, fmt.Errorf("empty file")
	}
	indices, err := parseHeader(scanner.Text())
	if err != nil {
		return nil, err
	}

	var lineCount int
	accStats := &conntrackStats{}
	for scanner.Scan() {
		lineCount++
		stats, err := parseConntrackData(scanner.Text(), indices)
		if err != nil {
			return nil, err
		}
		accStats.merge(stats)
	}
	if lineCount == 0 {
		return nil, fmt.Errorf("missing data")
	}
	return accStats, nil
}