mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-04 17:16:37 +08:00
35 lines
812 B
Go
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
|
|
}
|