config.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Package config provides the main configuration
  2. package config
  3. import (
  4. "golang.org/x/time/rate"
  5. "time"
  6. )
  7. // Defines default config settings
  8. const (
  9. DefaultListenHTTP = ":80"
  10. DefaultCacheDuration = 12 * time.Hour
  11. DefaultKeepaliveInterval = 30 * time.Second
  12. DefaultManagerInterval = time.Minute
  13. )
  14. // Defines all the limits
  15. // - request limit: max number of PUT/GET/.. requests (here: 50 requests bucket, replenished at a rate of 1 per second)
  16. // - global topic limit: max number of topics overall
  17. // - subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  18. var (
  19. defaultGlobalTopicLimit = 5000
  20. defaultVisitorRequestLimit = rate.Every(time.Second)
  21. defaultVisitorRequestLimitBurst = 50
  22. defaultVisitorSubscriptionLimit = 30
  23. )
  24. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  25. type Config struct {
  26. ListenHTTP string
  27. FirebaseKeyFile string
  28. CacheFile string
  29. CacheDuration time.Duration
  30. KeepaliveInterval time.Duration
  31. ManagerInterval time.Duration
  32. GlobalTopicLimit int
  33. VisitorRequestLimit rate.Limit
  34. VisitorRequestLimitBurst int
  35. VisitorSubscriptionLimit int
  36. }
  37. // New instantiates a default new config
  38. func New(listenHTTP string) *Config {
  39. return &Config{
  40. ListenHTTP: listenHTTP,
  41. FirebaseKeyFile: "",
  42. CacheFile: "",
  43. CacheDuration: DefaultCacheDuration,
  44. KeepaliveInterval: DefaultKeepaliveInterval,
  45. ManagerInterval: DefaultManagerInterval,
  46. GlobalTopicLimit: defaultGlobalTopicLimit,
  47. VisitorRequestLimit: defaultVisitorRequestLimit,
  48. VisitorRequestLimitBurst: defaultVisitorRequestLimitBurst,
  49. VisitorSubscriptionLimit: defaultVisitorSubscriptionLimit,
  50. }
  51. }