func()

in pkg/telemetry/telemetry.go [29:75]


func (c *Collector) Start(ctx context.Context, delay, sendEvery time.Duration) {
	log := ctrl.Log.WithName("telemetry-collector")

	go func() {
		timeToSend := time.Now().Add(delay)
		ticker := time.NewTicker(time.Second)

		defer ticker.Stop()

		for {
			select {
			case <-ctx.Done():
				log.Info("Stop telemetry-metrics collector")
				return
			case now := <-ticker.C:
				if timeToSend.Before(now) {
					if err := c.sendTelemetry(ctx); err != nil {
						log.Error(err, "Failed to send telemetry-metrics")
						return
					}

					log.Info("Telemetry-metrics were sent")

					return
				}
			}
		}
	}()

	ticker := time.NewTicker(sendEvery)
	defer ticker.Stop()

	for {
		select {
		case <-ctx.Done():
			log.Info("Stop telemetry-metrics collector")
			return
		case <-ticker.C:
			if err := c.sendTelemetry(ctx); err != nil {
				log.Error(err, "Failed to send telemetry-metrics")
				break
			}

			log.Info("Telemetry-metrics were sent")
		}
	}
}