model.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package model
  2. import (
  3. "rocommon/rpc"
  4. "rocommon/service"
  5. "rocommon/util"
  6. "roserver/baseserver/model"
  7. "roserver/serverproto"
  8. )
  9. func SendDB(msg interface{}) bool {
  10. data, meta, err := rpc.EncodeMessage(msg)
  11. if err != nil {
  12. util.InfoF("[SendDB] EncodeMessage err=%v,%v", err, msg)
  13. return false
  14. }
  15. dbNode := model.SelectServiceNode(model.SERVICE_NODE_TYPE_DB_STR, 0)
  16. if dbNode == "" {
  17. util.InfoF("[SendDB] db node not exist msg=%v", msg)
  18. return false
  19. }
  20. dbSess := model.GetServiceNode(dbNode)
  21. if dbSess == nil {
  22. util.ErrorF("[SendDB] db session not exist=%v", dbNode)
  23. } else {
  24. //如果玩家信息存在,ClientId中存放的是玩家ID,否则存放的是玩家的gate sessionId
  25. dbSess.Send(&serverproto.ServiceTransmitAck{
  26. MsgId: uint32(meta.ID),
  27. MsgData: data,
  28. })
  29. }
  30. return true
  31. }
  32. func SendAllSocial(msg interface{}) bool {
  33. data, meta, err := rpc.EncodeMessage(msg)
  34. if err != nil {
  35. util.ErrorF("SendSocial EncodeMessage err=%v,msg=%v", err, msg)
  36. return false
  37. }
  38. sendMsg := &serverproto.ServiceTransmitAck{
  39. MsgId: uint32(meta.ID),
  40. MsgData: data,
  41. }
  42. serviceList := model.GetAllServiceNodeByName(model.SERVICE_NODE_TYPE_SOCIAL_STR)
  43. for _, node := range serviceList {
  44. socialSess := model.GetServiceNode(node)
  45. if socialSess != nil {
  46. socialSess.Send(sendMsg)
  47. }
  48. }
  49. return true
  50. }
  51. func SendCrossRouter(msg interface{}, uid uint64) bool {
  52. socialPlayer := GetSocialPlayer(uid)
  53. if socialPlayer == nil {
  54. return false
  55. }
  56. data, meta, err := rpc.EncodeMessage(msg)
  57. if err != nil {
  58. util.InfoF("[SendCrossRouter] EncodeMessage err=%v,%v", err, msg)
  59. return false
  60. }
  61. crossRouterNode := model.SelectServiceNode(model.SERVICE_NODE_TYPE_CROSSROUTER_STR, 0)
  62. if crossRouterNode == "" {
  63. util.InfoF("[SendCrossRouter] cross-router node not exist msg=%v", msg)
  64. return false
  65. }
  66. crossRouterSess := model.GetServiceNode(crossRouterNode)
  67. if crossRouterSess == nil {
  68. util.ErrorF("[SendCrossRouter] cross-router session not exist=%v", crossRouterNode)
  69. } else {
  70. //如果玩家信息存在,ClientId中存放的是玩家ID,否则存放的是玩家的gate sessionId
  71. crossRouterSess.Send(&serverproto.ServiceTransmitRouterNtf{
  72. FromZone: int32(service.GetServiceConfig().Node.Zone),
  73. MsgId: uint32(meta.ID),
  74. MsgData: data,
  75. ClientId: uid,
  76. })
  77. }
  78. return true
  79. }