/// <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); }
/// <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"); } }
/// <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"); } }
/// <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, ""); } }