]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blame - vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go
Merge pull request #34 from jcalonso/fix/contact-group-backwards-compatible
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / aws / aws-sdk-go / aws / csm / metric_chan.go
CommitLineData
15c0b25d
AP
1package csm
2
3import (
4 "sync/atomic"
5)
6
7const (
8 runningEnum = iota
9 pausedEnum
10)
11
12var (
13 // MetricsChannelSize of metrics to hold in the channel
14 MetricsChannelSize = 100
15)
16
17type metricChan struct {
18 ch chan metric
19 paused int64
20}
21
22func newMetricChan(size int) metricChan {
23 return metricChan{
24 ch: make(chan metric, size),
25 }
26}
27
28func (ch *metricChan) Pause() {
29 atomic.StoreInt64(&ch.paused, pausedEnum)
30}
31
32func (ch *metricChan) Continue() {
33 atomic.StoreInt64(&ch.paused, runningEnum)
34}
35
36func (ch *metricChan) IsPaused() bool {
37 v := atomic.LoadInt64(&ch.paused)
38 return v == pausedEnum
39}
40
41// Push will push metrics to the metric channel if the channel
42// is not paused
43func (ch *metricChan) Push(m metric) bool {
44 if ch.IsPaused() {
45 return false
46 }
47
48 select {
49 case ch.ch <- m:
50 return true
51 default:
52 return false
53 }
54}