void MakePacket() { byte[] recvData; var headerSize = PacketDef.PacketHeader.PacketHeaderSize; while (RecvQueue.TryDequeue(out recvData) == true) { PacketBufferManager.Write(recvData, 0, recvData.Length); var packet = PacketBufferManager.Read(); if (packet.Count < 1) { break; } var packetData = new PacketDef.PacketData(); packetData.PacketHeader.PacketSize = (UInt16)(packet.Count - headerSize); packetData.PacketHeader.PacketID = BitConverter.ToUInt16(packet.Array, packet.Offset + 2); packetData.PacketHeader.PacketType = packet.Array[4]; packetData.PacketBody = new byte[packetData.PacketHeader.PacketSize]; Buffer.BlockCopy(packet.Array, packet.Offset + headerSize, packetData.PacketBody, 0, packet.Count - headerSize); PacketQueue.Enqueue(packetData); //var needPacketSize = BitConverter.ToUInt16(recvData, 0); //PacketDef.PacketData newPacketData = new PacketDef.PacketData(); //newPacketData.PacketHeader.PacketSize = needPacketSize; //newPacketData.PacketHeader.PacketID = BitConverter.ToUInt16(recvData, 2); //newPacketData.PacketHeader.PacketType = recvData[4]; //newPacketData.PacketBody = new byte[needPacketSize - headerSize]; //Buffer.BlockCopy(recvData, headerSize, newPacketData.PacketBody, 5, recvData.Length - headerSize); //needPacketSize -= (UInt16)recvData.Length; //while(needPacketSize != 0) //{ // if(RecvQueue.TryDequeue(out recvData) == true) // { // } //} //PacketQueue.Enqueue(newPacketData); } }
public bool GetPacket(out PacketDef.PacketData packetData) { return(PacketQueue.TryDequeue(out packetData)); }
void DispatchPacket() { PacketDef.PacketData packetData = null; while (ClientNetworkManager.GetPacket(out packetData) == true) { switch ((PacketDef.ClientGatePacketID)packetData.PacketHeader.PacketID) { case PacketDef.ClientGatePacketID.ResLogin: { Debug.Log("Recv ResLogin"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResLogin>(packetData.PacketBody); RecvLoginResult(packet.Result); } break; case PacketDef.ClientGatePacketID.ResLobbyEnter: { Debug.Log("Recv ResLobbyEnter"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResLobbyEnter>(packetData.PacketBody); RecvLobbyEnter(packet.Result); } break; case PacketDef.ClientGatePacketID.NTFLobbyChat: { Debug.Log("Recv NTFLobbyChat"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFLobbyChat>(packetData.PacketBody); RecvLobbyChat(packet.Chat); } break; case PacketDef.ClientGatePacketID.NTFMatchingResult: { Debug.Log("Recv NTFMatchingReuslt"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFMatchingResult>(packetData.PacketBody); RecvMatchingResult(packet.Result); } break; case PacketDef.ClientGatePacketID.ResRoomEnter: { Debug.Log("Recv ResRoomEnter"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTResRoomEnter>(packetData.PacketBody); RecvRoomEnter(packet.Result); } break; case PacketDef.ClientGatePacketID.NTFGameInfo: { Debug.Log("Recv NTFGameInfo"); var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGameInfo>(packetData.PacketBody); bool isGameSceneInit = IsGameSceneInit; while (isGameSceneInit == false) { Thread.Sleep(5); isGameSceneInit = IsGameSceneInit; } RecvGameInfo(packet); } break; case PacketDef.ClientGatePacketID.NTFGamePut: { var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGamePut>(packetData.PacketBody); RecvGamePut(packet); } break; case PacketDef.ClientGatePacketID.NTFGameResult: { var packet = MessagePackSerializer.Deserialize <GatewayServer.Packet.PKTNTFGameResult>(packetData.PacketBody); RecvGameResult(packet.Result); } break; } } }