mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-05 00:47:51 -05:00
32 lines
694 B
Go
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)
|
|
}
|