|
- package selfstat
-
- import (
- "sync/atomic"
- )
-
- type stat struct {
- v int64
- measurement string
- field string
- tags map[string]string
- key uint64
- }
-
- func (s *stat) Incr(v int64) {
- atomic.AddInt64(&s.v, v)
- }
-
- func (s *stat) Set(v int64) {
- atomic.StoreInt64(&s.v, v)
- }
-
- func (s *stat) Get() int64 {
- return atomic.LoadInt64(&s.v)
- }
-
- func (s *stat) Name() string {
- return s.measurement
- }
-
- func (s *stat) FieldName() string {
- return s.field
- }
-
- // Tags returns a copy of the stat's tags.
- // NOTE this allocates a new map every time it is called.
- func (s *stat) Tags() map[string]string {
- m := make(map[string]string, len(s.tags))
- for k, v := range s.tags {
- m[k] = v
- }
- return m
- }
|