game.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package gate
  2. import (
  3. "errors"
  4. "github.com/golang/protobuf/proto"
  5. "leafstalk/conf"
  6. "leafstalk/module"
  7. "leafstalk/module/handler"
  8. "leafstalk/router/protobuf"
  9. )
  10. type Module struct {
  11. *module.Skeleton
  12. config *conf.Config
  13. Processor *protobuf.Processor
  14. }
  15. // var dbRpc *handler.Server
  16. var skeleton *module.Skeleton
  17. var errServerNotFound = errors.New("server not found...")
  18. // func SetDbRpc(rpc *handler.Server) {
  19. // dbRpc = rpc
  20. // }
  21. // NewModule 构造
  22. func NewModule(processor *protobuf.Processor, config *conf.Config) *Module {
  23. mod := new(Module)
  24. mod.config = config
  25. //构造一个数据处理模块
  26. mod.Skeleton = module.NewSkeleton(config)
  27. mod.Processor = processor
  28. skeleton = mod.Skeleton
  29. return mod
  30. }
  31. // GetHandlerServer 获取
  32. func (m *Module) GetHandlerServer() *handler.Server {
  33. return m.HandlerServer
  34. }
  35. // OnInit 1
  36. func (m *Module) OnInit() {
  37. //m.Skeleton.RegisterChanRPC("NewClusterAgent", m.rpcNewClusterAgent)
  38. //m.Skeleton.RegisterChanRPC("CloseClusterAgent", rpcCloseClusterAgent)
  39. //
  40. //m.handleMsg(&pbfmsg.ServerLogin{}, m.handleServerLogin)
  41. //m.handleMsg(&pbfmsg.ResponseServerLogin{}, handleResponseServerLogin)
  42. //
  43. ////设置定时器
  44. //cronExpr, err := timer.NewCronExpr("*/1 * * * *")
  45. //if err != nil {
  46. // panic("定时器设置失败!")
  47. //}
  48. //m.Skeleton.CronFunc(cronExpr, m.onTimer)
  49. }
  50. func (m *Module) onTimer() {
  51. //服务器没认证,则定时进行认证
  52. //servers.AuthAllServer(m.config)
  53. // a := []interface{}{join}
  54. // handleCreateRoom(a)
  55. }
  56. // handleMsg 消息结构体注册处理函数
  57. func (m *Module) handleMsg(msg proto.Message, h interface{}) {
  58. /*//设置处理函数
  59. m.RegisterChanRPC(reflect.TypeOf(msg), h)
  60. //消息路由目标是本模块
  61. m.Processor.SetRouter(msg, m.HandlerServer)*/
  62. }
  63. func (m *Module) handleRpcMsg(msg interface{}, h interface{}) error {
  64. /*msgType := reflect.TypeOf(msg)
  65. if msgType == nil || msgType.Kind() != reflect.Ptr {
  66. return errors.New("json message pointer required")
  67. }
  68. msgID := msgType.Elem().Name()
  69. m.Skeleton.RegisterChanRPC(msgID, h)*/
  70. return nil
  71. }
  72. // OnDestroy 1
  73. func (m *Module) OnDestroy() {
  74. //GetLogicApp().Destory()
  75. }
  76. var (
  77. sendToWorldRetryCount = 0
  78. cleanRetryCount = func() {
  79. sendToWorldRetryCount = 0
  80. }
  81. )
  82. func SendToWorld(id int64, msg interface{}) (err error) {
  83. return errors.New("SendToWorld..")
  84. //if sendToWorldRetryCount > 0 {
  85. // defer cleanRetryCount()
  86. //}
  87. //
  88. //server := servers.GetWorldServer()
  89. //if server == nil {
  90. // // 服务重试
  91. // if sendToWorldRetryCount < 5 {
  92. // sendToWorldRetryCount++
  93. // logrus.Info("sendToWorldRetry:", sendToWorldRetryCount)
  94. // time.Sleep(time.Second * 1)
  95. // return SendToWorld(id, msg)
  96. // }
  97. // return errServerNotFound
  98. //}
  99. //
  100. //data, err := json.Marshal(msg)
  101. //if err != nil {
  102. // logrus.Errorln("SendToWorld json.Marshal err:", err)
  103. //}
  104. //
  105. //logrus.WithField("from", "SendToWorld").Infoln(id, string(data))
  106. //if err = server.Agent.WriteRouteMsg2(msg, id); err != nil {
  107. // logrus.Errorln(err)
  108. //}
  109. //return
  110. }