| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package core
- import (
- "sync"
- )
- type StatCounter interface {
- Value() int64
- Set(int64) int64
- Add(int64) int64
- }
- type StatManager interface {
- Feature
- RegisterCounter(string) (StatCounter, error)
- GetCounter(string) StatCounter
- }
- type syncStatManager struct {
- sync.RWMutex
- StatManager
- }
- func (s *syncStatManager) Start() error {
- s.RLock()
- defer s.RUnlock()
- if s.StatManager == nil {
- return nil
- }
- return s.StatManager.Start()
- }
- func (s *syncStatManager) Close() error {
- s.RLock()
- defer s.RUnlock()
- if s.StatManager == nil {
- return nil
- }
- return s.StatManager.Close()
- }
- func (s *syncStatManager) RegisterCounter(name string) (StatCounter, error) {
- s.RLock()
- defer s.RUnlock()
- if s.StatManager == nil {
- return nil, newError("StatManager not set.")
- }
- return s.StatManager.RegisterCounter(name)
- }
- func (s *syncStatManager) GetCounter(name string) StatCounter {
- s.RLock()
- defer s.RUnlock()
- if s.StatManager == nil {
- return nil
- }
- return s.StatManager.GetCounter(name)
- }
- func (s *syncStatManager) Set(m StatManager) {
- s.Lock()
- defer s.Unlock()
- s.StatManager = m
- }
|