enent.go 2.6 KB

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