event.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package guerrilla
  2. import (
  3. evbus "github.com/asaskevich/EventBus"
  4. )
  5. type Event int
  6. const (
  7. // when a new config was loaded
  8. EventConfigNewConfig Event = iota
  9. // when allowed_hosts changed
  10. EventConfigAllowedHosts
  11. // when pid_file changed
  12. EventConfigPidFile
  13. // when log_file changed
  14. EventConfigLogFile
  15. // when it's time to reload the main log file
  16. EventConfigLogReopen
  17. // when log level changed
  18. EventConfigLogLevel
  19. // when the backend's config changed
  20. EventConfigBackendConfigChanged
  21. // when a gateway was added
  22. EventConfigBackendConfigAdded
  23. // when a gateway was removed
  24. EventConfigBackendConfigRemoved
  25. // when a new server was added
  26. EventConfigServerNew
  27. // when an existing server was removed
  28. EventConfigServerRemove
  29. // when a new server config was detected (general event)
  30. EventConfigServerConfig
  31. // when a server was enabled
  32. EventConfigServerStart
  33. // when a server was disabled
  34. EventConfigServerStop
  35. // when a server's log file changed
  36. EventConfigServerLogFile
  37. // when it's time to reload the server's log
  38. EventConfigServerLogReopen
  39. // when a server's timeout changed
  40. EventConfigServerTimeout
  41. // when a server's max clients changed
  42. EventConfigServerMaxClients
  43. // when a server's TLS config changed
  44. EventConfigServerTLSConfig
  45. // when the server's backend config changed
  46. EventConfigServerGatewayConfig
  47. )
  48. var eventList = [...]string{
  49. "config_change:new_config",
  50. "config_change:allowed_hosts",
  51. "config_change:pid_file",
  52. "config_change:log_file",
  53. "config_change:reopen_log_file",
  54. "config_change:log_level",
  55. "backend_change:backend",
  56. "backend_change:backend_config_added",
  57. "backend_change:backend_removed",
  58. "server_change:new_server",
  59. "server_change:remove_server",
  60. "server_change:update_config",
  61. "server_change:start_server",
  62. "server_change:stop_server",
  63. "server_change:new_log_file",
  64. "server_change:reopen_log_file",
  65. "server_change:timeout",
  66. "server_change:max_clients",
  67. "server_change:tls_config",
  68. "server_change:gateway",
  69. }
  70. func (e Event) String() string {
  71. return eventList[e]
  72. }
  73. type EventHandler struct {
  74. evbus.Bus
  75. }
  76. func (h *EventHandler) Subscribe(topic Event, fn interface{}) error {
  77. if h.Bus == nil {
  78. h.Bus = evbus.New()
  79. }
  80. return h.Bus.Subscribe(topic.String(), fn)
  81. }
  82. func (h *EventHandler) Publish(topic Event, args ...interface{}) {
  83. h.Bus.Publish(topic.String(), args...)
  84. }
  85. func (h *EventHandler) Unsubscribe(topic Event, handler interface{}) error {
  86. return h.Bus.Unsubscribe(topic.String(), handler)
  87. }