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,
}
}