func()

in hub/hub.go [155:194]


func (c *MetricHub) ReceiveGRPC(families []*dto.MetricFamily) {
	t0 := time.Now()

	c.Lock()
	defer c.Unlock()

	newDatapoints := 0
	for _, fam := range families {
		newDatapoints += len(fam.Metric)
	}

	// Check if new datapoints will exceed the specified limit
	if c.limit > 0 {
		if c.stats.currentCountDatapoints+newDatapoints > c.limit {
			errString := fmt.Sprintf("Not accepting push of size %d. Would overfill hub limit of %d. Current hub size: %d\n", newDatapoints, c.limit, c.stats.currentCountDatapoints)
			glog.Error(errString)
			return
		}
	}

	for _, fam := range families {
		if families, ok := c.metricFamiliesByName[fam.GetName()]; ok {
			families.addMetrics(fam.Metric)
		} else {
			c.metricFamiliesByName[fam.GetName()] = newFamilyAndMetrics(fam)
		}
	}

	grpcReceiveTime.Set(time.Since(t0).Seconds())
	log.Printf("GRPC Time: %v\n", time.Since(t0))
	log.Printf("GRPC Time(seconds): %f\n", time.Since(t0).Seconds())
	grpcReceiveSizeFam.Set(float64(len(families)))
	grpcReceiveSizeDP.Set(float64(newDatapoints))

	c.stats.lastGRPCReceiveTime = time.Now().Unix()
	c.stats.lastGRPCReceiveNumFamilies = len(families)
	c.stats.lastGRPCReceiveSize = binary.Size(families)
	c.stats.currentCountDatapoints += newDatapoints

}