Files
flvx/go-gost/x/traffic/traffic.go
T
2025-06-25 10:49:06 +08:00

35 lines
812 B
Go

package traffic
import (
"context"
"sync"
)
// Manager 流量管理器接口
type Manager interface {
RecordTraffic(ctx context.Context, service string, upload, download int64) error
GetAllServicesStats(ctx context.Context) (map[string]map[string]int64, error)
ClearAllTrafficStats(ctx context.Context) error
SubtractTrafficStats(ctx context.Context, stats map[string]map[string]int64) error
Close() error
TestConnection(ctx context.Context) error
}
var (
globalManager Manager
once sync.Once
)
// GetGlobalManager 获取全局流量管理器实例
func GetGlobalManager() Manager {
once.Do(func() {
globalManager = NewMemoryManager()
})
return globalManager
}
// SetGlobalManager 设置全局流量管理器(用于测试)
func SetGlobalManager(m Manager) {
globalManager = m
}