private static void ProcessAcknowledgePacket(AcknowledgePacket ack) { int id = ack.GetTransferID(); if (ActiveOutboundTransferProcess != null) { ActiveOutboundTransferProcess.ReceivePacket(ack); } }
/// <summary> /// Receives and processes an INetworkPacket packet /// </summary> /// <param name="packet"></param> public void ReceivePacket(INetworkPacket packet) { switch (packet) { case DataCarryPacket dcp: //using (FileStream fStream = new FileStream(TempFilePath, FileMode.Append, FileAccess.Write)) //{ // fStream.Write(packet.PacketData, 0, packet.PacketData.Length); //} fStream.Write(packet.PacketData, 0, packet.PacketData.Length); //using (FileStream fStream = File.Open(TempFilePath, FileMode.OpenOrCreate)) //{ // fStream.Seek(0, SeekOrigin.End); // fStream.Write(packet.PacketData, 0, packet.PacketData.Length); //} // Send the ack packet back AcknowledgePacket ack = new AcknowledgePacket(dcp.PacketNumber, TransferID); NetComm.SendByteArray(ack.ToByteArray(), SenderEndPoint); // If it's marked as last, process the file if (dcp.IsLast) { //ReceivedChunks.Add(new DataChunk(dcp.PacketNumber, dcp.PacketData)); //ProcessFinishedFile(); ProcessFinishedFileStream(); } else { //ReceivedChunks.Add(new DataChunk(dcp.PacketNumber, dcp.PacketData)); } break; } }