config.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Package config provides the main configuration
  2. package config
  3. import (
  4. "time"
  5. )
  6. // Defines default config settings
  7. const (
  8. DefaultListenHTTP = ":80"
  9. DefaultCacheDuration = 12 * time.Hour
  10. DefaultKeepaliveInterval = 30 * time.Second
  11. DefaultManagerInterval = time.Minute
  12. )
  13. // Defines all the limits
  14. // - global topic limit: max number of topics overall
  15. // - per visistor request limit: max number of PUT/GET/.. requests (here: 60 requests bucket, replenished at a rate of one per 10 seconds)
  16. // - per visistor subscription limit: max number of subscriptions (active HTTP connections) per per-visitor/IP
  17. const (
  18. DefaultGlobalTopicLimit = 5000
  19. DefaultVisitorRequestLimitBurst = 60
  20. DefaultVisitorRequestLimitReplenish = 10 * time.Second
  21. DefaultVisitorSubscriptionLimit = 30
  22. )
  23. // Config is the main config struct for the application. Use New to instantiate a default config struct.
  24. type Config struct {
  25. ListenHTTP string
  26. FirebaseKeyFile string
  27. CacheFile string
  28. CacheDuration time.Duration
  29. KeepaliveInterval time.Duration
  30. ManagerInterval time.Duration
  31. GlobalTopicLimit int
  32. VisitorRequestLimitBurst int
  33. VisitorRequestLimitReplenish time.Duration
  34. VisitorSubscriptionLimit int
  35. BehindProxy bool
  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. VisitorRequestLimitBurst: DefaultVisitorRequestLimitBurst,
  48. VisitorRequestLimitReplenish: DefaultVisitorRequestLimitReplenish,
  49. VisitorSubscriptionLimit: DefaultVisitorSubscriptionLimit,
  50. BehindProxy: false,
  51. }
  52. }