public void RegistHandle(UInt32 mID, WalkHandleMgr.Handle hHandle) { if (m_Parent != null) { m_Parent.RegistHandle(mID, hHandle); } }
public void ReceiveByte(byte [] bData, int nLength) { if (bData != null && nLength > 0) { //GameLibrary.isSendPackage = false; //Debug.Log( "收到服务器回复消息更改状态 " + GameLibrary.isSendPackage ); //if ( Application.loadedLevelName == "UI_MajorCity" ) //{ // Control.HideGUI( GameLibrary.UIWaitForSever ); //} if ((m_nbyteDataLength + nLength) > DataDefine.MAX_PACKET_SIZE) { Debug.Log("error! the packet is too large,more than " + DataDefine.MAX_PACKET_SIZE); Debug.Log("m_nbyteDataLength:" + m_nbyteDataLength); Debug.Log("nReceiveLen:" + nLength); //Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE); //m_nbyteDataLength = 0; Debug.Log("ReadPacket's length too large! "); return; } Array.Copy(bData, 0, m_byteDataList, m_nbyteDataLength, nLength); m_nbyteDataLength += nLength; while (true) { if (m_nbyteDataLength < m_sPacketMinLength) { Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE); m_nbyteDataLength = 0; Debug.Log("ReadPacket's length "); return; } // Debug.Log("m_nbyteDataLength:"+m_nbyteDataLength); // Debug.Log("nReceiveLen:"+nLength); //handle CReadPacket readPacket = new CReadPacket(m_byteDataList); if (m_nbyteDataLength >= readPacket.GetPacketLen()) { Debug.Log("Receive Handle msgid:" + readPacket.GetMessageID() + "lens:" + readPacket.GetPacketLen()); WalkHandleMgr.Handle hHandle = GetHandle(readPacket.GetMessageID()); Debug.Log(hHandle); if (hHandle != null) { hHandle(readPacket); } else { Debug.Log("No handle attach:" + readPacket.GetMessageID()); } //clear int len = readPacket.GetPacketLen(); int nNewLen = m_nbyteDataLength - readPacket.GetPacketLen(); if (nNewLen > 0) { byte [] bTempData = new byte [nNewLen]; Array.Copy(m_byteDataList, readPacket.GetPacketLen(), bTempData, 0, nNewLen); Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE); Array.Copy(bTempData, 0, m_byteDataList, 0, nNewLen); } else { Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE); } m_nbyteDataLength = nNewLen; } else { break; } } } }