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 }