enent.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package event
  2. import (
  3. "sync"
  4. "time"
  5. "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
  6. mhayaLogger "github.com/mhaya/logger"
  7. )
  8. type EventManage struct {
  9. eventMap sync.Map
  10. }
  11. type Eventer interface {
  12. EventName() string
  13. }
  14. var (
  15. instance *EventManage
  16. once sync.Once
  17. _ Eventer = &eventmodels.UserRegisterEventContent{}
  18. _ Eventer = &eventmodels.UserLoginEventContent{}
  19. _ Eventer = &eventmodels.UserUpdateInfoEventContent{}
  20. _ Eventer = &eventmodels.UserWithdrawEventContent{}
  21. _ Eventer = &eventmodels.AssetsEventContent{}
  22. _ Eventer = &eventmodels.InviteEventContent{}
  23. _ Eventer = &eventmodels.DiceEventContent{}
  24. _ Eventer = &eventmodels.TurntableEventContent{}
  25. _ Eventer = &eventmodels.JoinChannelEventContent{}
  26. _ Eventer = &eventmodels.FollowEventContent{}
  27. _ Eventer = &eventmodels.TaskFinishEventContent{}
  28. _ Eventer = &eventmodels.ClickEventContent{}
  29. _ Eventer = &eventmodels.BackendOperationEventContent{}
  30. )
  31. func init() {
  32. once.Do(func() {
  33. instance = &EventManage{
  34. eventMap: sync.Map{},
  35. }
  36. })
  37. instance.AddEvent(new(eventmodels.UserRegisterEventContent))
  38. instance.AddEvent(new(eventmodels.UserLoginEventContent))
  39. instance.AddEvent(new(eventmodels.UserUpdateInfoEventContent))
  40. instance.AddEvent(new(eventmodels.UserWithdrawEventContent))
  41. instance.AddEvent(new(eventmodels.AssetsEventContent))
  42. instance.AddEvent(new(eventmodels.InviteEventContent))
  43. instance.AddEvent(new(eventmodels.DiceEventContent))
  44. instance.AddEvent(new(eventmodels.TurntableEventContent))
  45. instance.AddEvent(new(eventmodels.JoinChannelEventContent))
  46. instance.AddEvent(new(eventmodels.FollowEventContent))
  47. instance.AddEvent(new(eventmodels.TaskFinishEventContent))
  48. instance.AddEvent(new(eventmodels.ClickEventContent))
  49. instance.AddEvent(new(eventmodels.BackendOperationEventContent))
  50. }
  51. func GetEventIdMap() *EventManage {
  52. return instance
  53. }
  54. func (em *EventManage) AddEvent(e Eventer) {
  55. em.eventMap.Store(e.EventName(), e)
  56. }
  57. func (em *EventManage) GetEvent(eventName string) Eventer {
  58. value, exist := em.eventMap.Load(eventName)
  59. if !exist {
  60. return nil
  61. }
  62. return value.(Eventer)
  63. }
  64. func (em *EventManage) PrintAllEvent() {
  65. // 延迟1S 以便集中输出内容
  66. time.Sleep(time.Second)
  67. mhayaLogger.Info("-------------------EventList Begin------------------------------")
  68. em.eventMap.Range(func(key, value any) bool {
  69. mhayaLogger.Infof("[event name = %s]", key)
  70. mhayaLogger.Infof("[event content = %#v]", value)
  71. return true
  72. })
  73. mhayaLogger.Info("-------------------EventList End------------------------------")
  74. }