event.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package utils
  2. import (
  3. "github.com/zjxpcyc/tinyevent"
  4. )
  5. // EventEngine Event Engine
  6. type EventEngine struct {
  7. ID string
  8. engine *tinyevent.DefaultBus
  9. }
  10. var evtBus map[string]*EventEngine
  11. // EventEngineBus 初始化实例
  12. func EventEngineBus(id string) *EventEngine {
  13. if evtBus == nil {
  14. evtBus = make(map[string]*EventEngine)
  15. }
  16. if id == "" {
  17. return nil
  18. }
  19. if evtBus[id] == nil {
  20. evtEngine := &EventEngine{
  21. ID: id,
  22. engine: new(tinyevent.DefaultBus),
  23. }
  24. evtBus[id] = evtEngine
  25. }
  26. return evtBus[id]
  27. }
  28. // ResetEventEngineBus 重设事件管理引擎
  29. func ResetEventEngineBus(id string) *EventEngine {
  30. if id == "" {
  31. return nil
  32. }
  33. if evtBus == nil {
  34. evtBus = make(map[string]*EventEngine)
  35. }
  36. evtEngine := &EventEngine{
  37. ID: id,
  38. engine: new(tinyevent.DefaultBus),
  39. }
  40. evtBus[id] = evtEngine
  41. return evtEngine
  42. }
  43. // EmitEvent 执行事件
  44. func (t EventEngine) EmitEvent(evt string, payload interface{}) {
  45. e := tinyevent.Event{
  46. Name: evt,
  47. Payload: payload,
  48. }
  49. t.engine.Emit(e)
  50. }
  51. // ListenEvent 注册监听
  52. func (t EventEngine) ListenEvent(evt string, act tinyevent.Action) string {
  53. return t.engine.On(evt, act)
  54. }
  55. // UnListenEvt 取消监听
  56. func (t EventEngine) UnListenEvt(id string) {
  57. t.engine.Off(id)
  58. }
  59. // EngineIDBy 获取 Engine Id
  60. func EngineIDBy(orgID, caseID string) string {
  61. return orgID + caseID
  62. }