//private GamePBSerializer m_kPBSerializer; #endregion static MessageHelper() { m_kCSMsgHead = new MSG_HEAD(); m_cSendBuffer = new byte[65536]; m_kSendStream = new MemoryStream(m_cSendBuffer); m_kStreamWriter = new BinaryWriter(m_kSendStream, System.Text.Encoding.BigEndianUnicode); }
protected virtual void ProcessRecvedMessage() { byte[] headData = new byte[(int)MsgHeadSize.CS_MG_HEAD_SIZE]; MemoryStream kHeadReadStream = new MemoryStream(headData); BinaryReader m_kStreamReader = new BinaryReader(kHeadReadStream, System.Text.Encoding.BigEndianUnicode); MSG_HEAD msgHead = new MSG_HEAD(); while (m_kRecvBuffer.GetBuffValidSize() >= (int)MsgHeadSize.CS_MG_HEAD_SIZE) { m_kRecvBuffer.GetData(ref headData, (int)MsgHeadSize.CS_MG_HEAD_SIZE); kHeadReadStream.Position = 0; msgHead.Decode(m_kStreamReader); if (msgHead.m_usSize > m_kRecvBuffer.GetBuffValidSize()) { break; } if (!m_kRecvBuffer.PopData((int)MsgHeadSize.CS_MG_HEAD_SIZE)) { break; } int iMsgBodySize = msgHead.m_usSize - (int)MsgHeadSize.CS_MG_HEAD_SIZE; MemoryStream kMsgBodyStream = null; if (iMsgBodySize > 0) { byte[] bodyBuff = new byte[iMsgBodySize]; bool bResult = m_kRecvBuffer.PopData(ref bodyBuff, iMsgBodySize); if (bResult == false) { break; } kMsgBodyStream = new MemoryStream(bodyBuff); } //Debug.Log("Receive Message with type " + msgHead.m_usMsgType); if (m_kHandler != null) { m_kHandler(msgHead, kMsgBodyStream, iMsgBodySize); } } m_kRecvBuffer.Regroup(); }
static void HandleReceiveMessage(MSG_HEAD msgHead, MemoryStream kMsgBodyStream, int iMsgBodySize) { switch (msgHead.m_usMsgType) { case (ushort)MessageType.MT_E2D_START: SyncManager.SyncFrameRate = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0); SendSceneID(); break; case (ushort)MessageType.MT_E2D_SYNC_REQUEST: SyncManager.FindD2ESyncObjects(FBHelper.DeserializeSyncIDList(kMsgBodyStream.ToArray())); MessageHelper.SendShortMessage(m_kConnector, MessageType.MT_D2E_SYNC_RESPOND, (ushort)SyncManager.D2ESyncObjectsCount); break; case (ushort)MessageType.MT_E2D_START_SYNC: SyncManager.IsD2ESyncStart = true; break; case (ushort)MessageType.MT_E2D_STOP_SYNC: SyncManager.IsD2ESyncStart = false; break; case (ushort)MessageType.MT_E2D_CONTROL_REQUEST: SyncManager.FindE2DControlObjects(FBHelper.DeserializeSyncIDList(kMsgBodyStream.ToArray())); MessageHelper.SendShortMessage(m_kConnector, MessageType.MT_D2E_CONTROL_RESPOND, (ushort)SyncManager.E2DControlObjectsCount); break; case (ushort)MessageType.MT_E2D_CONTROL_UPDATE: SyncManager.E2DControlUpdate(kMsgBodyStream.ToArray()); break; case (ushort)MessageType.MT_E2D_STOP_CONTROL: break; case (ushort)MessageType.MT_E2D_UPDATE_SYNC_RATE: SyncManager.SyncFrameRate = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0); break; default: Debug.LogError("Wrong Message Type : " + msgHead.m_usMsgType); break; } }
static void HandleReceiveMessage(MSG_HEAD msgHead, MemoryStream kMsgBodyStream, int iMsgBodySize) { switch (msgHead.m_usMsgType) { case (ushort)MessageType.MT_D2E_SCENE_ID: case (ushort)MessageType.MT_D2E_SCENE_CHANGED: int sceneid = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0); Debug.Log("Scene ID : " + sceneid); SyncManager.SyncSceneID = sceneid; break; case (ushort)MessageType.MT_D2E_SYNC_RESPOND: int syncCount = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0); Debug.Log("Sync Object count : " + syncCount); if (syncCount > 0) { MessageHelper.SendEmptyMessage(m_kConnector, MessageType.MT_E2D_START_SYNC); SyncManager.IsD2ESyncStart = true; } break; case (ushort)MessageType.MT_D2E_SYNC_UPDATE: SyncManager.D2ESyncUpdate(kMsgBodyStream.ToArray()); break; case (ushort)MessageType.MT_D2E_CONTROL_RESPOND: int controlCount = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0); Debug.Log("Contorl Object count : " + controlCount); SyncManager.IsE2DSyncStart = controlCount > 0; break; default: Debug.LogError("Wrong Message Type : " + msgHead.m_usMsgType); break; } }