event.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 changed
  20. EventConfigBackendName
  21. // when the backend's config changed
  22. EventConfigBackendConfig
  23. // when a new server was added
  24. EventConfigEvServerNew
  25. // when an existing server was removed
  26. EventConfigServerRemove
  27. // when a new server config was detected (general event)
  28. EventConfigServerConfig
  29. // when a server was enabled
  30. EventConfigServerStart
  31. // when a server was disabled
  32. EventConfigServerStop
  33. // when a server's log file changed
  34. EventConfigServerLogFile
  35. // when it's time to reload the server's log
  36. EventConfigServerLogReopen
  37. // when a server's timeout changed
  38. EventConfigServerTimeout
  39. // when a server's max clients changed
  40. EventConfigServerMaxClients
  41. // when a server's TLS config changed
  42. EventConfigServerTLSConfig
  43. )
  44. var eventList = [...]string{
  45. "config_change:new_config",
  46. "config_change:allowed_hosts",
  47. "config_change:pid_file",
  48. "config_change:log_file",
  49. "config_change:reopen_log_file",
  50. "config_change:log_level",
  51. "config_change:backend_config",
  52. "config_change:backend_name",
  53. "server_change:new_server",
  54. "server_change:remove_server",
  55. "server_change:update_config",
  56. "server_change:start_server",
  57. "server_change:stop_server",
  58. "server_change:new_log_file",
  59. "server_change:reopen_log_file",
  60. "server_change:timeout",
  61. "server_change:max_clients",
  62. "server_change:tls_config",
  63. "backend:proc_config_load",
  64. "backend:proc_init",
  65. "backend:proc_shutdown",
  66. }
  67. func (e Event) String() string {
  68. return eventList[e]
  69. }
  70. type EventHandler struct {
  71. *evbus.EventBus
  72. }
  73. func (h *EventHandler) Subscribe(topic Event, fn interface{}) error {
  74. if h.EventBus == nil {
  75. h.EventBus = evbus.New()
  76. }
  77. return h.EventBus.Subscribe(topic.String(), fn)
  78. }
  79. func (h *EventHandler) Publish(topic Event, args ...interface{}) {
  80. h.EventBus.Publish(topic.String(), args...)
  81. }
  82. func (h *EventHandler) Unsubscribe(topic Event, handler interface{}) error {
  83. return h.EventBus.Unsubscribe(topic.String(), handler)
  84. }