func()

in pipeline/sources/heartbeat.go [46:76]


func (h *heartbeat) run(start time.Time) {
	interval := time.Duration(h.hb.IntervalSeconds) * time.Second
	end := start.Add(interval)

	running := true
	for running {
		now := h.clock.Now()
		nextFire := now.Add(end.Sub(now))
		timer := h.clock.NewTimerAt(nextFire)
		select {
		case <-timer.GetC():
			report := metrics.MetricReport{
				Name:      h.hb.Metric,
				StartTime: start,
				EndTime:   end,
				Value:     h.hb.Value,
				Labels:    h.hb.Labels,
			}
			err := h.input.AddReport(report.Copy())
			if err != nil {
				glog.Errorf("heartbeat: error sending report: %+v", err)
			}
			start = end
			end = end.Add(interval)
		case <-h.close:
			running = false
		}
		timer.Stop()
	}
	h.wait.Done()
}