system_events.go 709 B

12345678910111213141516171819202122232425262728293031323334
  1. package utils
  2. import (
  3. "sync"
  4. )
  5. // SystemEvents 定义系统级事件处理
  6. type SystemEvents struct {
  7. reloadHandlers []func() error
  8. mu sync.RWMutex
  9. }
  10. // 全局事件管理器
  11. var GlobalSystemEvents = &SystemEvents{}
  12. // RegisterReloadHandler 注册系统重载处理函数
  13. func (e *SystemEvents) RegisterReloadHandler(handler func() error) {
  14. e.mu.Lock()
  15. defer e.mu.Unlock()
  16. e.reloadHandlers = append(e.reloadHandlers, handler)
  17. }
  18. // TriggerReload 触发所有注册的重载处理函数
  19. func (e *SystemEvents) TriggerReload() error {
  20. e.mu.RLock()
  21. defer e.mu.RUnlock()
  22. for _, handler := range e.reloadHandlers {
  23. if err := handler(); err != nil {
  24. return err
  25. }
  26. }
  27. return nil
  28. }