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