package limits import ( "fmt" "github.com/openziti/zrok/controller/store" "github.com/openziti/zrok/sdk/golang/sdk" "github.com/openziti/zrok/util" ) type configBandwidthClass struct { periodInMinutes int bw *Bandwidth limitAction store.LimitAction } func newConfigBandwidthClasses(cfg *BandwidthPerPeriod) []store.BandwidthClass { return []store.BandwidthClass{ &configBandwidthClass{ periodInMinutes: int(cfg.Period.Minutes()), bw: cfg.Warning, limitAction: store.WarningLimitAction, }, &configBandwidthClass{ periodInMinutes: int(cfg.Period.Minutes()), bw: cfg.Limit, limitAction: store.LimitLimitAction, }, } } func (bc *configBandwidthClass) IsGlobal() bool { return true } func (bc *configBandwidthClass) IsScoped() bool { return false } func (bc *configBandwidthClass) GetLimitClassId() int { return -1 } func (bc *configBandwidthClass) GetShareMode() sdk.ShareMode { return "" } func (bc *configBandwidthClass) GetBackendMode() sdk.BackendMode { return "" } func (bc *configBandwidthClass) GetPeriodMinutes() int { return bc.periodInMinutes } func (bc *configBandwidthClass) GetRxBytes() int64 { return bc.bw.Rx } func (bc *configBandwidthClass) GetTxBytes() int64 { return bc.bw.Tx } func (bc *configBandwidthClass) GetTotalBytes() int64 { return bc.bw.Total } func (bc *configBandwidthClass) GetLimitAction() store.LimitAction { return bc.limitAction } func (bc *configBandwidthClass) String() string { out := fmt.Sprintf("ConfigClass store.Unlimited { out += fmt.Sprintf(", rxBytes: %v", util.BytesToSize(bc.bw.Rx)) } if bc.bw.Tx > store.Unlimited { out += fmt.Sprintf(", txBytes: %v", util.BytesToSize(bc.bw.Tx)) } if bc.bw.Total > store.Unlimited { out += fmt.Sprintf(", totalBytes: %v", util.BytesToSize(bc.bw.Total)) } out += fmt.Sprintf(", limitAction: %s>", bc.limitAction) return out }