xs/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go
Russ Magee caac02a77b 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string)
2/2 Added vendor/ dir to lock down dependent pkg versions.
The author of git.schwanenlied.me/yawning/{chacha20,newhope,kyber}.git has copied
their repos to gitlab.com/yawning/ but some imports of chacha20 from newhope still
inconsistently refer to git.schwanenlied.me/, breaking build.
Licenses for chacha20 also changed from CC0 to AGPL, which may or may not be an
issue. Until the two aforementioned issues are resolved, locking to last-good
versions is probably the best way forward for now.

To build with vendored deps, use make VENDOR=1 clean all
2020-01-29 13:55:38 -08:00

97 lines
1.3 KiB
Go

package cexp
import "gopkg.in/hlandau/measurable.v1"
import "sync/atomic"
// Counter
type Counter struct {
name string
value int64
}
func (c *Counter) MsName() string {
return c.name
}
func (c *Counter) MsInt64() int64 {
return atomic.LoadInt64(&c.value)
}
func (c *Counter) Get() int64 {
return c.MsInt64()
}
// v must be non-negative.
func (c *Counter) Add(v int64) {
atomic.AddInt64(&c.value, v)
}
func (c *Counter) Inc() {
c.Add(1)
}
func (c *Counter) MsType() measurable.Type {
return measurable.CounterType
}
func NewCounter(name string) *Counter {
c := &Counter{
name: name,
}
measurable.Register(c)
return c
}
// Gauge
type Gauge struct {
name string
value int64
}
func (c *Gauge) MsName() string {
return c.name
}
func (c *Gauge) MsInt64() int64 {
return atomic.LoadInt64(&c.value)
}
func (c *Gauge) Add(v int64) {
atomic.AddInt64(&c.value, v)
}
func (c *Gauge) Sub(v int64) {
c.Add(-v)
}
func (c *Gauge) Set(v int64) {
atomic.StoreInt64(&c.value, v)
}
func (c *Gauge) Get() int64 {
return c.MsInt64()
}
func (c *Gauge) Inc() {
c.Add(1)
}
func (c *Gauge) Dec() {
c.Add(-1)
}
func (c *Gauge) MsType() measurable.Type {
return measurable.GaugeType
}
func NewGauge(name string) *Gauge {
c := &Gauge{
name: name,
}
measurable.Register(c)
return c
}