github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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/loggo" 10 "gopkg.in/juju/worker.v1" 11 12 "github.com/juju/juju/api/metricsmanager" 13 jworker "github.com/juju/juju/worker" 14 ) 15 16 var senderLogger = loggo.GetLogger("juju.worker.metricworker.sender") 17 18 const senderPeriod = 5 * time.Minute 19 20 // NewSender creates a new periodic worker that sends metrics 21 // to a collection service. 22 func newSender(client metricsmanager.MetricsManagerClient, notify chan string) worker.Worker { 23 f := func(stopCh <-chan struct{}) error { 24 err := client.SendMetrics() 25 if err != nil { 26 senderLogger.Warningf("failed to send metrics %v - will retry later", err) 27 return nil 28 } 29 select { 30 case notify <- "senderCalled": 31 default: 32 } 33 return nil 34 } 35 return jworker.NewPeriodicWorker(f, senderPeriod, jworker.NewTimer) 36 }