sampler-fork/data/sampler.go

32 lines
545 B
Go
Raw Normal View History

2019-01-31 00:02:38 +00:00
package data
import (
"time"
)
2019-02-03 04:11:26 +00:00
type Sampler struct {
2019-01-31 00:02:38 +00:00
consumer Consumer
2019-01-31 23:40:05 +00:00
item Item
2019-01-31 00:02:38 +00:00
}
2019-02-03 04:11:26 +00:00
func NewSampler(consumer Consumer, item Item, rateMs int) Sampler {
2019-01-31 00:02:38 +00:00
ticker := time.NewTicker(time.Duration(rateMs * int(time.Millisecond)))
2019-02-03 04:11:26 +00:00
sampler := Sampler{consumer, item}
2019-01-31 00:02:38 +00:00
go func() {
sampler.sample()
for ; true; <-ticker.C {
sampler.sample()
2019-01-31 00:02:38 +00:00
}
}()
2019-02-03 04:11:26 +00:00
return sampler
2019-01-31 00:02:38 +00:00
}
func (s *Sampler) sample() {
value, err := s.item.nextValue()
sample := Sample{Value: value, Error: err, Label: *s.item.Label}
s.consumer.ConsumeSample(sample)
2019-01-31 00:02:38 +00:00
}