func newFamilyAndMetrics()

in hub/hub.go [338:359]


func newFamilyAndMetrics(family *dto.MetricFamily) *familyAndMetrics {
	metrics := make(map[string][]*dto.Metric)
	for _, metric := range family.Metric {
		name := makeLabeledName(metric, family.GetName())
		if metricQueue, ok := metrics[name]; ok {
			if *metric.TimestampMs >= *metricQueue[len(metricQueue)-1].TimestampMs {
				metrics[name] = append(metricQueue, metric)
			} else {
				metrics[name] = sortedInsert(metricQueue, metric)
			}
		} else {
			metrics[name] = []*dto.Metric{metric}
		}
	}
	// clear metrics in family because we are keeping them in the queues
	family.Metric = nil

	return &familyAndMetrics{
		family:  family,
		metrics: metrics,
	}
}