enent.go 2.3 KB

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