rate_limiter.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Code generated by excel export. DO NOT EDIT.
  2. package data
  3. var RateLimiter = &rateLimiterConfig{}
  4. func init() {
  5. _allList = append(_allList, RateLimiter)
  6. }
  7. type (
  8. RateLimiterRow struct {
  9. RateID string `json:"RateID"` // ID
  10. Enable bool `json:"Enable"` // 是否启用
  11. Interval int64 `json:"Interval"` // 限速周期
  12. Capacity int64 `json:"Capacity"` // 桶容量
  13. Quantum int64 `json:"Quantum"` // 增量
  14. CleanTickerInterval int64 `json:"CleanTickerInterval"` // 定时器清理周期
  15. CleanBeforeMinute int64 `json:"CleanBeforeMinute"` // 桶清理周期
  16. ErrorCode int32 `json:"ErrorCode"` // 状态码
  17. }
  18. rateLimiterConfig struct {
  19. baseConfig
  20. list []*RateLimiterRow // all list
  21. rateIDUniMaps map[string]*RateLimiterRow // key:rateID
  22. }
  23. )
  24. func (p *rateLimiterConfig) Name() string {
  25. return "rate_limiter"
  26. }
  27. func (p *rateLimiterConfig) Init() {
  28. p.rateIDUniMaps = map[string]*RateLimiterRow{}
  29. }
  30. func (p *rateLimiterConfig) OnLoad(maps interface{}, reload bool) (int, error) {
  31. if reload && p.denyLoad {
  32. return 0, nil
  33. }
  34. var list []*RateLimiterRow
  35. if err := DecodeData(maps, &list); err != nil {
  36. return 0, err
  37. }
  38. p.list = list
  39. rateIDUniMaps := map[string]*RateLimiterRow{}
  40. for _, row := range list {
  41. rateIDUniMaps[row.RateID] = row
  42. }
  43. p.rateIDUniMaps = rateIDUniMaps
  44. return len(list), nil
  45. }
  46. // func (p *rateLimiterConfig) OnAfterLoad(_ bool) {
  47. // }
  48. func (p *rateLimiterConfig) List() []*RateLimiterRow {
  49. return p.list
  50. }
  51. func (p *rateLimiterConfig) GetByRateID(rateID string) (*RateLimiterRow, bool) {
  52. value, found := p.rateIDUniMaps[rateID]
  53. return value, found
  54. }
  55. func (p *rateLimiterConfig) ContainRateID(rateID string) bool {
  56. _, found := p.rateIDUniMaps[rateID]
  57. return found
  58. }