github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/metricworker/sender.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package metricworker 5 6 import ( 7 "time" 8 9 "github.com/juju/worker/v3" 10 11 "github.com/juju/juju/api/controller/metricsmanager" 12 jworker "github.com/juju/juju/worker" 13 ) 14 15 const senderPeriod = 5 * time.Minute 16 17 // NewSender creates a new periodic worker that sends metrics 18 // to a collection service. 19 func newSender(client metricsmanager.MetricsManagerClient, notify chan string, logger Logger) worker.Worker { 20 f := func(stopCh <-chan struct{}) error { 21 err := client.SendMetrics() 22 if err != nil { 23 logger.Warningf("failed to send metrics %v - will retry later", err) 24 return nil 25 } 26 select { 27 case notify <- "senderCalled": 28 default: 29 } 30 return nil 31 } 32 return jworker.NewPeriodicWorker(f, senderPeriod, jworker.NewTimer) 33 }