Пример #1
0
        private ErrorCode GStateReportHandler(NetSessionBase session, Protos.GSInfo GSInfoRecv)
        {
            session.logicID = GSInfoRecv.Id;
            bool hasRecord = CS.instance.lIDToGSInfos.TryGetValue(session.logicID, out GSInfo gsInfo);

            if (!hasRecord)
            {
                gsInfo = new GSInfo();
                CS.instance.lIDToGSInfos[session.logicID] = gsInfo;
            }
            //更新GS信息
            gsInfo.lid       = session.logicID;
            gsInfo.sessionID = session.id;
            gsInfo.name      = GSInfoRecv.Name;
            gsInfo.ip        = GSInfoRecv.Ip;
            gsInfo.port      = GSInfoRecv.Port;
            gsInfo.password  = GSInfoRecv.Password;
            gsInfo.state     = (GSInfo.State)GSInfoRecv.State;
            //Logger.Log( $"report from GS:{gsInfo}" );

            //转发到LS
            Protos.CS2LS_GSInfo nGSInfo = ProtoCreator.Q_CS2LS_GSInfo();
            nGSInfo.GsInfo = new Protos.GSInfo
            {
                Id       = gsInfo.lid,
                Name     = gsInfo.name,
                Ip       = gsInfo.ip,
                Port     = gsInfo.port,
                Password = gsInfo.password,
                State    = (Protos.GSInfo.Types.State)gsInfo.state
            };
            CS.instance.netSessionMgr.Send(SessionType.ServerLS, nGSInfo);
            return(ErrorCode.Success);
        }
Пример #2
0
 public ErrorCode OnCs2LsGsinfo(NetSessionBase session, Google.Protobuf.IMessage message)
 {
     Protos.CS2LS_GSInfo gsInfo = (Protos.CS2LS_GSInfo)message;
     return(this.GCStateReportHandler(gsInfo.GsInfo));
 }