| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package model
- import (
- "rocommon/rpc"
- "rocommon/service"
- "rocommon/util"
- "roserver/baseserver/model"
- "roserver/serverproto"
- )
- func SendDB(msg interface{}) bool {
- data, meta, err := rpc.EncodeMessage(msg)
- if err != nil {
- util.InfoF("[SendDB] EncodeMessage err=%v,%v", err, msg)
- return false
- }
- dbNode := model.SelectServiceNode(model.SERVICE_NODE_TYPE_DB_STR, 0)
- if dbNode == "" {
- util.InfoF("[SendDB] db node not exist msg=%v", msg)
- return false
- }
- dbSess := model.GetServiceNode(dbNode)
- if dbSess == nil {
- util.ErrorF("[SendDB] db session not exist=%v", dbNode)
- } else {
- //如果玩家信息存在,ClientId中存放的是玩家ID,否则存放的是玩家的gate sessionId
- dbSess.Send(&serverproto.ServiceTransmitAck{
- MsgId: uint32(meta.ID),
- MsgData: data,
- })
- }
- return true
- }
- func SendAllSocial(msg interface{}) bool {
- data, meta, err := rpc.EncodeMessage(msg)
- if err != nil {
- util.ErrorF("SendSocial EncodeMessage err=%v,msg=%v", err, msg)
- return false
- }
- sendMsg := &serverproto.ServiceTransmitAck{
- MsgId: uint32(meta.ID),
- MsgData: data,
- }
- serviceList := model.GetAllServiceNodeByName(model.SERVICE_NODE_TYPE_SOCIAL_STR)
- for _, node := range serviceList {
- socialSess := model.GetServiceNode(node)
- if socialSess != nil {
- socialSess.Send(sendMsg)
- }
- }
- return true
- }
- func SendCrossRouter(msg interface{}, uid uint64) bool {
- socialPlayer := GetSocialPlayer(uid)
- if socialPlayer == nil {
- return false
- }
- data, meta, err := rpc.EncodeMessage(msg)
- if err != nil {
- util.InfoF("[SendCrossRouter] EncodeMessage err=%v,%v", err, msg)
- return false
- }
- crossRouterNode := model.SelectServiceNode(model.SERVICE_NODE_TYPE_CROSSROUTER_STR, 0)
- if crossRouterNode == "" {
- util.InfoF("[SendCrossRouter] cross-router node not exist msg=%v", msg)
- return false
- }
- crossRouterSess := model.GetServiceNode(crossRouterNode)
- if crossRouterSess == nil {
- util.ErrorF("[SendCrossRouter] cross-router session not exist=%v", crossRouterNode)
- } else {
- //如果玩家信息存在,ClientId中存放的是玩家ID,否则存放的是玩家的gate sessionId
- crossRouterSess.Send(&serverproto.ServiceTransmitRouterNtf{
- FromZone: int32(service.GetServiceConfig().Node.Zone),
- MsgId: uint32(meta.ID),
- MsgData: data,
- ClientId: uid,
- })
- }
- return true
- }
|