enent.go 2.4 KB

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