Ejemplo n.º 1
0
 /// <summary>
 /// 协议解析处理
 /// </summary>
 /// <param name="dates">协议数据</param>
 /// <param name="sessionID">连接SessionID</param>
 /// <returns>是否解析成功</returns>
 public bool Parse(RecvedProtocolDataInfo protoData)
 {
     m_protoData = protoData;
     if (InternalProtocolClientHelper.IntepretMessage(m_protoData.m_Datas, this))
     {
         return(true);
     }
     if (InternalProtocolServerHelper.IntepretMessage(m_protoData.m_Datas, this))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
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");
            }
        }
Ejemplo n.º 3
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");
            }
        }
Ejemplo n.º 4
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, "");
            }
        }