Example #1
0
        /// <summary>
        /// 有服务来重新注册(其他Server向CenterServer注册用)
        /// </summary>
        /// <param name="svrInfo">服务信息</param>
        public void OnReRegisterSvr(ref PtServerInfo svrInfo)
        {
            SvLogger.Info("OnReRegisterSvr Begin: ServerType={0}, ServerName={1}, sessionID={2}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID);
            svrInfo.m_SessionID = m_protoData.m_SessionID;
            int errCode = RegServerManager.Instance.RegServer(ref svrInfo);

            if (errCode == 0)
            {
                ServerCommon.Network.NetworkManager.Instance.OnServerRegist(svrInfo);

                //注册成功
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.ReRegisterSvrOK(RegServerManager.Instance.m_SelfSvrInfo));
                SvLogger.Info("OnReRegisterSvr OK: ServerType={0}, ServerName={1}, sessionID={2}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID);

                InternalProtocolDealDelegate.Instance.OnReregistServer(svrInfo, "Succ");
            }
            else
            {
                //注册失败
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.ReRegisterSvrFail(errCode, "Reregist Center Server Fail!"));
                SvLogger.Info("OnReRegisterSvr Fail: ServerType={0}, ServerName={1}, sessionID={2}, errCode={3}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID, errCode);

                InternalProtocolDealDelegate.Instance.OnReregistServer(svrInfo, "Fail");
            }
        }
Example #2
0
        /// <summary>
        /// 显示缓存中数据库访问数量
        /// </summary>
        /// <returns></returns>
        public void ShowDBAccCountInPool()
        {
            if (m_logDbAccPool != null)
            {
                SvLogger.Info(string.Format("### Main DBType=LogDB, AccCountInPool={0}.", m_logDbAccPool.GetDBCountInPool()));
            }

            if (m_secdDbAccPool != null)
            {
                SvLogger.Info(string.Format("### Main DBType=SecdDB, AccCountInPool={0}.", m_secdDbAccPool.GetDBCountInPool()));
            }

            for (int i = 0; i < m_gameDBMainConnFlagList.Count; ++i)
            {
                DbAccessPool dbPool = GetDBPool(m_gameDBMainConnFlagList[i]);
                if (dbPool != null)
                {
                    SvLogger.Info(string.Format("### Main DBType=GameDB, AccCountInPool={0}.", dbPool.GetDBCountInPool()));
                    List <int> childFlagList;
                    m_gameDBChildConnFlagDic.TryGetValue(m_gameDBMainConnFlagList[i], out childFlagList);
                    if (childFlagList != null)
                    {
                        for (int j = 0; j < childFlagList.Count; ++j)
                        {
                            dbPool = GetDBPool(childFlagList[j]);
                            if (dbPool != null)
                            {
                                SvLogger.Info(string.Format("###        Child DBFlag={0}, AccCountInPool={1}.", childFlagList[j], dbPool.GetDBCountInPool()));
                            }
                        }
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// 有服务通知连接(除CenterSrever之外其他服务之间互联验证用)
        /// </summary>
        /// <param name="svrinfo">服务信息</param>
        /// <param name="sessionID"></param>
        public void OnNotifyConnectorSvr(ref com.tieao.mmo.interval.PtServerInfo svrinfo)
        {
            SvLogger.Info("OnNotifyConnectorSvr Begin: ServerType={0}, ServerName={1}, sessionID={2}.", svrinfo.m_Type, svrinfo.m_Name, m_protoData.m_SessionID);
            svrinfo.m_SessionID = m_protoData.m_SessionID;
            int errCode = RegServerManager.Instance.RegServer(ref svrinfo);

            if (errCode == 0)
            {
                //连接成功
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.ConnectSvrSucc(RegServerManager.Instance.m_SelfSvrInfo));
                SvLogger.Info("OnNotifyConnectorSvr OK: ServerType={0}, ServerName={1}, sessionID={2}.", svrinfo.m_Type, svrinfo.m_Name, m_protoData.m_SessionID);

                if (SvrCommCfg.Instance.ServerInfo.m_Type == eServerType.GAMEDATA && svrinfo.m_Type == eServerType.DATABASE)
                {
                    //通知DBS可以发送数据过来
                    Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, com.tieao.mmo.database4server.server.GDSUpdate2DBSServerHelper.RequestAllPlayerData());
                }

                InternalProtocolDealDelegate.Instance.OnConnectServerSucc(svrinfo, "Succ");
            }
            else
            {
                //连接验证失败
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.ConnectSvrFail(errCode, RegServerManager.Instance.m_SelfSvrInfo));
                SvLogger.Info("OnNotifyConnectorSvr Fail: ServerType={0}, ServerName={1}, sessionID={2}, errCode={3}.", svrinfo.m_Type, svrinfo.m_Name, m_protoData.m_SessionID, errCode);

                InternalProtocolDealDelegate.Instance.OnConnectServerFail(svrinfo, "");
            }
        }
Example #4
0
                public bool Connect()
                {
                    CloseConnectionService();

                    try
                    {
                        m_connService = new ConnectService(OnRecvServerData,
                                                           OnServerConnectionClose,
                                                           OnOpenNewServerConnection,
                                                           OnOpenConnectionWithSvrInfoFail);
                        //m_connService.RegisterInternalProtocolDealer(InternalProtocolDealer.Instance.Parse);

                        bool result = m_connService.Connect(m_ip, m_port);
                        if (result == true)
                        {
                            SvLogger.Info("Start Connect : Address={0}, Port={1}", m_ip, m_port);
                            return(true);
                        }
                        else
                        {
                            m_connService.Channel.Close();
                            m_connService = null;
                        }
                        return(false);
                    }
                    catch (Exception ex)
                    {
                        SvLogger.Fatal(ex, "OpenConnectionFail : IP={0}, Port={1}, ErrMsg={2}.", m_ip, m_port, ex.Message);
                    }
                    return(false);
                }
Example #5
0
 /// <summary>
 /// 打印协议缓存池中排队协议数
 /// </summary>
 /// <returns></returns>
 public void ShowProtocolCountInPool()
 {
     //SvLogger.Info("*** ShowProtocolCountInPool Before Lock.");
     lock (m_cachePoolLock)
     {
         SvLogger.Info("### Protocol Count In Pool={0}.", m_cachePool.Count);
     }
     //SvLogger.Info("*** ShowProtocolCountInPool After Lock.");
 }
Example #6
0
 /// <summary>
 /// 初始化服务
 /// </summary>
 /// <returns></returns>
 virtual public void InitInstance(string[] args)
 {
     //修改引用TITLE
     if (SvrCommCfg.Instance.ServerInfo.m_Name == "")
     {
         SvLogger.Error("ServerName cannot be empty.");
     }
     SvLogger.Info("ServerName = {0}.", SvrCommCfg.Instance.ServerInfo.m_Name);
     if (Environment.OSVersion.Platform == PlatformID.Win32NT)
     {
         Process processes = Process.GetCurrentProcess();
         PInvoker.SetConsoleTitle(GetAssemblyName() + " - " + processes.Id);
         SvrCommCfg.Instance.ProcessID = processes.Id;
     }
 }
Example #7
0
        /// <summary>
        /// 重新向CenterServer注册成功
        /// </summary>
        /// <param name="svrInfo">CenterServer信息</param>
        public void OnReRegisterSvrOK(ref com.tieao.mmo.interval.PtServerInfo svrInfo)
        {
            SvLogger.Info("OnReRegisterSvrOK Begin : ServerType={0}, IP={1}, Port={2}.", svrInfo.m_Type, svrInfo.m_Address, svrInfo.m_Port);

            svrInfo.m_SessionID = m_protoData.m_SessionID;
            int errCode = RegServerManager.Instance.RegServer(ref svrInfo);

            if (errCode != 0)
            {
                SvLogger.Error("    RegServer Fail : errCode={0}.", errCode);
            }

            InternalProtocolDealDelegate.Instance.OnReregistServerSucc(svrInfo, errCode.ToString());

            SvLogger.Info("OnConnectSvrSucc Done.");
        }
Example #8
0
        /// <summary>
        /// 打印协议平均等待时间
        /// </summary>
        public void ShowProtocolWaitingTimeAverage()
        {
            //SvLogger.Info("*** ShowProtocolWaitingTimeAverage Before Lock.");
            lock (m_cachePoolLock)
            {
                int aveTime = 0;
                if (m_protoTotalCount != 0)
                {
                    aveTime = m_protoTotalWaitTime / m_protoTotalCount;
                }

                SvLogger.Info("### Protocol Wait Time Average={0}.", aveTime);
                SvLogger.Info("### Protocol Count Deal This Minutes={0}.", m_protoTotalCount);

                m_protoTotalWaitTime = 0;
                m_protoTotalCount    = 0;
            }
            //SvLogger.Info("*** ShowProtocolWaitingTimeAverage After Lock.");
        }
Example #9
0
        /// <summary>
        /// 有服务来注册
        /// </summary>
        /// <param name="svrInfo">服务信息</param>
        /// <param name="sessionID"></param>
        public void OnRegisterSvr(ref com.tieao.mmo.interval.PtServerInfo svrInfo)
        {
            SvLogger.Info("OnRegisterSvr Begin: ServerType={0}, ServerName={1}, sessionID={2}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID);
            svrInfo.m_SessionID = m_protoData.m_SessionID;

            int errCode = RegServerManager.Instance.RegServer(ref svrInfo);

            if (errCode == 0)
            {
                ServerCommon.Network.NetworkManager.Instance.OnServerRegist(svrInfo);

                PtServerList connectSvrList = null;
                //注册成功
                if (SvrCommCfg.Instance.ServerInfo.m_Type == eServerType.CENTER)
                {
                    connectSvrList = RegServerManager.Instance.GetServerListWithout(ref svrInfo);
                }
                else
                {
                    connectSvrList = new PtServerList();
                }
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.RegisterSvrOK(RegServerManager.Instance.m_SelfSvrInfo, connectSvrList));
                SvLogger.Info("OnRegisterSvr OK: ServerType={0}, ServerName={1}, sessionID={2}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID);

                InternalProtocolDealDelegate.Instance.OnRegistServer(svrInfo, "Succ");

                if (SvrCommCfg.Instance.ServerInfo.m_Type == eServerType.CENTER)
                {
                    ByteArray sendData = InternalProtocolClientHelper.ReportServerID(SvrCommCfg.Instance.ServerInfo.m_ServerID);
                    Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, sendData);
                }
            }
            else
            {
                //注册失败
                Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolClientHelper.RegisterSvrFail(errCode, RegServerManager.Instance.m_SelfSvrInfo));
                SvLogger.Info("OnRegisterSvr Fail: ServerType={0}, ServerName={1}, sessionID={2}, ErrCode={3}.", svrInfo.m_Type, svrInfo.m_Name, m_protoData.m_SessionID, errCode);

                InternalProtocolDealDelegate.Instance.OnRegistServer(svrInfo, "Fail");
            }
        }
Example #10
0
        /// <summary>
        /// 连接服务器成功
        /// </summary>
        /// <param name="svrinfo">服务器信息</param>
        /// <param name="sessionID"></param>
        public void OnConnectSvrSucc(ref com.tieao.mmo.interval.PtServerInfo svrinfo)
        {
            SvLogger.Info("OnConnectSvrSucc Begin : ServerType={0}, IP={1}, Port={2}.", svrinfo.m_Type, svrinfo.m_Address, svrinfo.m_Port);

            if (Network.NetworkManager.Instance.IsNeedRegistServer(svrinfo.m_Type))
            {
                SvLogger.Info("     RegServer To {2} Server : IP={0}, Port={1}.", svrinfo.m_Address, svrinfo.m_Port, svrinfo.m_Type);
                if (Network.NetworkManager.Instance.HadRegistedServer(svrinfo.m_Type) == true)
                {
                    //去重新注册
                    Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolServerHelper.ReRegisterSvr(SvrCommCfg.Instance.ServerInfo));
                }
                else
                {
                    //去注册
                    Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, InternalProtocolServerHelper.RegisterSvr(SvrCommCfg.Instance.ServerInfo));
                }
            }
            else
            {
                svrinfo.m_SessionID = m_protoData.m_SessionID;
                int errCode = RegServerManager.Instance.RegServer(ref svrinfo);
                if (errCode != 0)
                {
                    SvLogger.Error("     RegServer Fail!");
                }
                else
                {
                    if (SvrCommCfg.Instance.ServerInfo.m_Type == eServerType.GAMEDATA && svrinfo.m_Type == eServerType.DATABASE)
                    {
                        //通知DBS可以发送数据过来
                        Network.NetworkManager.Instance.SendMessageToServer(m_protoData.m_SessionID, com.tieao.mmo.database4server.server.GDSUpdate2DBSServerHelper.RequestAllPlayerData());
                    }
                }
            }
            InternalProtocolDealDelegate.Instance.OnConnectServerSucc(svrinfo, "");
            SvLogger.Info("OnConnectSvrSucc Done.");
        }
Example #11
0
        /// <summary>
        /// 初始化服务实例
        /// </summary>
        /// <returns></returns>
        public override bool Init(string[] args)
        {
            if (base.Init(args) == false)
            {
                return(false);
            }

            #region 初始化服务配置

            //初始化LOG日志配置
            SvLogger.Init(XmlConfigure.Instance.GetAppConfigString("LogFile"), XmlConfigure.Instance.GetAppConfigString("LogFileLevel"), XmlConfigure.Instance.GetAppConfigString("LogConsoleLevel"));

            ServerConfigData.ListenPort = XmlConfigure.Instance.GetAppConfigInt("ListenPort");
            ServerConfigData.DBIP       = XmlConfigure.Instance.GetAppConfigString("DBIP");
            ServerConfigData.DBPort     = XmlConfigure.Instance.GetAppConfigInt("DBPort");
            ServerConfigData.DBName     = XmlConfigure.Instance.GetAppConfigString("DBName");
            ServerConfigData.DBUser     = XmlConfigure.Instance.GetAppConfigString("DBUser");
            ServerConfigData.DBPassword = XmlConfigure.Instance.GetAppConfigString("DBPassword");

            ServerConfigData.OSSPath     = XmlConfigure.Instance.GetAppConfigString("OSSPath");
            ServerConfigData.OSSUser     = XmlConfigure.Instance.GetAppConfigString("OSSUser");
            ServerConfigData.OSSPassword = XmlConfigure.Instance.GetAppConfigString("OSSPassword");

            #endregion

            #region 网络组更新启动
            try
            {
                SvLogger.Info("<< Start Network Listen : OutSidePort={0}.", ServerConfigData.ListenPort);
                ServerCommon.Network.XDNetworkManager.Instance.InitConfig(ServerConfigData.ListenPort);
                ServerCommon.Network.XDNetworkManager.Instance.StartRun();
            }
            catch (Exception ex)
            {
                SvLogger.Fatal(ex, ">> ****** Network Listen Fail! Msg={0}", ex.Message);
                return(false);
            }
            SvLogger.Info(">> Network Listen Succ !!!");
            #endregion

            #region 数据库连接

            bool dbConnectBack = false;
            dbConnectBack = DBAccessCfg.Instance.InitDBConnection(eDbConnFlag.Game,
                                                                  ServerConfigData.DBIP,
                                                                  ServerConfigData.DBPort,
                                                                  ServerConfigData.DBName,
                                                                  ServerConfigData.DBUser,
                                                                  ServerConfigData.DBPassword);
            if (dbConnectBack == false)
            {
                SvLogger.Error("DB Access Config Deal Error!");
                return(false);
            }

            #endregion

            #region 从数据库加载服务器组配置数据

            //LoadDataFromMySqlManager.Instance.m_OnLoadAllTableSucc = onLoadConfigFromDBFinish;
            //LoadDataFromMySqlManager.Instance.LoadData();

            #endregion

            return(true);
        }
Example #12
0
 /// <summary>
 /// 连接服务器失败
 /// </summary>
 /// <param name="errcode">错误信息</param>
 /// <param name="svrinfo">连接的服务器信息</param>
 public void OnConnectSvrFail(int errcode, ref com.tieao.mmo.interval.PtServerInfo svrinfo)
 {
     InternalProtocolDealDelegate.Instance.OnConnectServerFail(svrinfo, "");
     SvLogger.Info("OnConnectSvrFail : ServerType={0}, IP={1}, Port={2}, ErrCode={3}.", svrinfo.m_Type, svrinfo.m_Address, svrinfo.m_Port, errcode);
 }
Example #13
0
 /// <summary>
 ///  通知服务器关闭
 /// </summary>
 /// <param name="param">关闭参数</param>
 /// <param name="sessionID"></param>
 public void OnShutDownSvr(string param)
 {
     //关闭服务
     SvLogger.Info("OnShutDownSvr : param={0}", param);
     BasicService.RecvCenterServerCloseCommand();
 }
Example #14
0
        /// <summary>
        /// 注册服务成功
        /// </summary>
        /// <param name="svrinfo">注册服务信息</param>
        /// <param name="regedsvrlist">已经注册的服务信息列表</param>
        /// <param name="sessionID"></param>
        public void OnRegisterSvrOK(ref com.tieao.mmo.interval.PtServerInfo svrinfo, ref com.tieao.mmo.interval.PtServerList regedsvrlist)
        {
            SvLogger.Info("OnRegisterSvrOK Begin: ServerType={0}, ServerName={1}, RegedServerCount={2}, sessionID={3}.", svrinfo.m_Type, svrinfo.m_Name, regedsvrlist.GetElements().Count, m_protoData.m_SessionID);
            List <eServerType> connectSvrTypeList = new List <eServerType>();

            svrinfo.m_SessionID = m_protoData.m_SessionID;
            int errCode = RegServerManager.Instance.RegServer(ref svrinfo);

            if (errCode != 0)
            {
                SvLogger.Error("    RegisterFail : ErrCode={0}.", errCode);
                InternalProtocolDealDelegate.Instance.OnRegistServerSucc(svrinfo, errCode.ToString());
            }
            else
            {
                if (svrinfo.m_Type == eServerType.CENTER)
                {
                    SvrCommCfg.Instance.ServerInfo.m_ServerID = svrinfo.m_ServerID;
                }

                switch (RegServerManager.Instance.m_SelfSvrInfo.m_Type)
                {
                case eServerType.GATEWAY:
                {
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                    connectSvrTypeList.Add(eServerType.CHAT);
                    //connectSvrTypeList.Add(eServerType.PUBLIC);
                }
                break;

                case eServerType.GAME:
                {
                    connectSvrTypeList.Add(eServerType.GATEWAY);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.RANK);
                    connectSvrTypeList.Add(eServerType.LOG);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                    connectSvrTypeList.Add(eServerType.CHAT);
                }
                break;

                case eServerType.CENTER:
                {
                }
                break;

                case eServerType.GAMEDATA:
                {
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.DATABASE);
                    connectSvrTypeList.Add(eServerType.LOG);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                    connectSvrTypeList.Add(eServerType.CHAT);
                }
                break;

                case eServerType.PUBLIC:
                {
                    //connectSvrTypeList.Add(eServerType.GATEWAY);
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.DATABASE);
                    connectSvrTypeList.Add(eServerType.RANK);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                    connectSvrTypeList.Add(eServerType.LOG);
                    connectSvrTypeList.Add(eServerType.CHAT);
                }
                break;

                case eServerType.DATABASE:
                {
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.LOG);
                }
                break;

                case eServerType.RANK:
                {
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                }
                break;

                case eServerType.LOG:
                {
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.DATABASE);
                    connectSvrTypeList.Add(eServerType.CHAT);
                }
                break;

                case eServerType.CROSSREALM:
                    break;

                case eServerType.CROSSREALM_BATTLE:
                    break;

                case eServerType.PROTAL:
                    break;

                case eServerType.MONITEORNODE:
                    break;

                case eServerType.GM:
                    break;

                case eServerType.PLATFORM_DOCKING:
                    break;

                case eServerType.MONITEORSERVER:
                    break;

                case eServerType.WORLDBOSS:
                {
                    connectSvrTypeList.Add(eServerType.GATEWAY);
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.LOG);
                    connectSvrTypeList.Add(eServerType.CHAT);
                }
                break;

                case eServerType.CHAT:
                {
                    connectSvrTypeList.Add(eServerType.GATEWAY);
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.LOG);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                }
                break;

                case eServerType.COMMANDSENDER:
                {
                    connectSvrTypeList.Add(eServerType.DATABASE);
                    connectSvrTypeList.Add(eServerType.GAMEDATA);
                    connectSvrTypeList.Add(eServerType.GAME);
                    connectSvrTypeList.Add(eServerType.PUBLIC);
                    connectSvrTypeList.Add(eServerType.RANK);
                    connectSvrTypeList.Add(eServerType.GATEWAY);
                    connectSvrTypeList.Add(eServerType.CHAT);
                    connectSvrTypeList.Add(eServerType.WORLDBOSS);
                }
                break;

                case eServerType.UNKNOW:
                    SvLogger.Error("    This Server Type Unknow!");
                    break;
                }

                for (int i = 0; i < regedsvrlist.GetElements().Count; ++i)
                {
                    if (connectSvrTypeList.Contains(regedsvrlist.GetElements()[i].m_Type))
                    {
                        bool result = Network.NetworkManager.Instance.OpenRegServerConnection(regedsvrlist.GetElements()[i]);
                        if (result == true)
                        {
                            SvLogger.Info("     Start To Connect Server : ServerType={0}, IP={1}, Port={2}.",
                                          regedsvrlist.GetElements()[i].m_Type.ToString(),
                                          regedsvrlist.GetElements()[i].m_Address,
                                          regedsvrlist.GetElements()[i].m_Port);
                        }
                        else
                        {
                            SvLogger.Error("    Connect To Server Fail : ServerType={0}, IP={1}, Port={2}.",
                                           regedsvrlist.GetElements()[i].m_Type.ToString(),
                                           regedsvrlist.GetElements()[i].m_Address,
                                           regedsvrlist.GetElements()[i].m_Port);
                        }
                    }
                }

                if (Network.NetworkManager.Instance.IsNeedRegistServer(svrinfo.m_Type))
                {
                    Network.NetworkManager.Instance.RegistToServerSucc(m_protoData.m_SessionID, ref svrinfo);
                }

                InternalProtocolDealDelegate.Instance.OnRegistServerSucc(svrinfo, "0");
            }

            SvLogger.Info("OnRegisterSvrOK Done: ServerType={0}, ServerName={1}, NeedConnectServerCount={2}, sessionID={3}.", svrinfo.m_Type, svrinfo.m_Name, connectSvrTypeList.Count, m_protoData.m_SessionID);
        }