1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-09 17:30:44 +00:00
v2fly/features/stats/stats.go
2018-10-13 15:15:49 +02:00

32 lines
694 B
Go

package stats
import "v2ray.com/core/features"
type Counter interface {
Value() int64
Set(int64) int64
Add(int64) int64
}
type Manager interface {
features.Feature
RegisterCounter(string) (Counter, error)
GetCounter(string) Counter
}
// GetOrRegisterCounter tries to get the StatCounter first. If not exist, it then tries to create a new counter.
func GetOrRegisterCounter(m Manager, name string) (Counter, error) {
counter := m.GetCounter(name)
if counter != nil {
return counter, nil
}
return m.RegisterCounter(name)
}
// ManagerType returns the type of Manager interface. Can be used to implement common.HasType.
func ManagerType() interface{} {
return (*Manager)(nil)
}