enent.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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.UserRewardEventContent{}
  22. _ Eventer = &eventmodels.AssetsEventContent{}
  23. _ Eventer = &eventmodels.InviteEventContent{}
  24. _ Eventer = &eventmodels.DiceEventContent{}
  25. _ Eventer = &eventmodels.TurntableEventContent{}
  26. _ Eventer = &eventmodels.JoinChannelEventContent{}
  27. _ Eventer = &eventmodels.FollowEventContent{}
  28. _ Eventer = &eventmodels.TaskFinishEventContent{}
  29. _ Eventer = &eventmodels.BackendOperationEventContent{}
  30. _ Eventer = &eventmodels.ShareEventContent{}
  31. _ Eventer = &eventmodels.SigninEventContent{}
  32. )
  33. func init() {
  34. once.Do(func() {
  35. instance = &EventManage{
  36. eventMap: sync.Map{},
  37. }
  38. })
  39. instance.AddEvent(new(eventmodels.UserRegisterEventContent))
  40. instance.AddEvent(new(eventmodels.UserLoginEventContent))
  41. instance.AddEvent(new(eventmodels.UserUpdateInfoEventContent))
  42. instance.AddEvent(new(eventmodels.UserWithdrawEventContent))
  43. instance.AddEvent(new(eventmodels.UserRewardEventContent))
  44. instance.AddEvent(new(eventmodels.AssetsEventContent))
  45. instance.AddEvent(new(eventmodels.InviteEventContent))
  46. instance.AddEvent(new(eventmodels.DiceEventContent))
  47. instance.AddEvent(new(eventmodels.TurntableEventContent))
  48. instance.AddEvent(new(eventmodels.JoinChannelEventContent))
  49. instance.AddEvent(new(eventmodels.FollowEventContent))
  50. instance.AddEvent(new(eventmodels.TaskFinishEventContent))
  51. instance.AddEvent(new(eventmodels.BackendOperationEventContent))
  52. instance.AddEvent(new(eventmodels.ShareEventContent))
  53. instance.AddEvent(new(eventmodels.SigninEventContent))
  54. }
  55. func GetEventIdMap() *EventManage {
  56. return instance
  57. }
  58. func (em *EventManage) AddEvent(e Eventer) {
  59. em.eventMap.Store(e.EventName(), e)
  60. }
  61. func (em *EventManage) GetEvent(eventName string) Eventer {
  62. value, exist := em.eventMap.Load(eventName)
  63. if !exist {
  64. return nil
  65. }
  66. return value.(Eventer)
  67. }
  68. func (em *EventManage) PrintAllEvent() {
  69. // 延迟1S 以便集中输出内容
  70. time.Sleep(time.Second)
  71. mhayaLogger.Info("-------------------EventList Begin------------------------------")
  72. em.eventMap.Range(func(key, value any) bool {
  73. mhayaLogger.Infof("[event name = %s]", key)
  74. mhayaLogger.Infof("[event content = %#v]", value)
  75. return true
  76. })
  77. mhayaLogger.Info("-------------------EventList End------------------------------")
  78. }