func()

in core/log/metric/reader.go [39:69]


func (r *defaultMetricLogReader) ReadMetrics(nameList []string, fileNo uint32, startOffset uint64, maxLines uint32) ([]*base.MetricItem, error) {
	if len(nameList) == 0 {
		return make([]*base.MetricItem, 0), nil
	}
	// startOffset: the offset of the first file to read
	items, shouldContinue, err := r.readMetricsInOneFile(nameList[fileNo], startOffset, maxLines, 0, 0)
	if err != nil {
		return nil, err
	}
	if !shouldContinue {
		return items, nil
	}
	fileNo++
	// Continue reading until the size or time does not satisfy the condition
	for {
		if int(fileNo) >= len(nameList) || len(items) >= int(maxLines) {
			// No files to read.
			break
		}
		arr, shouldContinue, err := r.readMetricsInOneFile(nameList[fileNo], 0, maxLines, getLatestSecond(items), uint32(len(items)))
		if err != nil {
			return nil, err
		}
		items = append(items, arr...)
		if !shouldContinue {
			break
		}
		fileNo++
	}
	return items, nil
}