58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
using Articulate_Network.Packets;
|
|
using MIT_Packets.Transfer;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MIT_Builder_Client.Handlers
|
|
{
|
|
public class FileTransferHandler
|
|
{
|
|
static string fileName;
|
|
static long expectedSize;
|
|
static long currentSize = 0;
|
|
|
|
static FileStream fs;
|
|
|
|
public static void HandleTransfer(Packet packet)
|
|
{
|
|
if (packet is StartFileTransferPacket)
|
|
StartFileTransfer((StartFileTransferPacket)packet);
|
|
|
|
if (packet is SendFileChunkPacket)
|
|
ReceiveChunk((SendFileChunkPacket)packet);
|
|
|
|
if (packet is EndFileTransferPacket)
|
|
{
|
|
Console.WriteLine($"Transfer completed. Received {packetsReceived} packets.");
|
|
fs.Flush();
|
|
fs.Close();
|
|
}
|
|
}
|
|
|
|
static int packetsReceived = 0;
|
|
|
|
static void StartFileTransfer(StartFileTransferPacket packet)
|
|
{
|
|
fileName = packet.FileName + "-transferred";
|
|
expectedSize = packet.ExpectedSize;
|
|
|
|
Console.WriteLine($"Preparing to receive {fileName} expected size: {expectedSize}");
|
|
|
|
fs = File.Create(fileName);
|
|
}
|
|
|
|
static void ReceiveChunk(SendFileChunkPacket packet)
|
|
{
|
|
Console.WriteLine(packet.ChunkSize);
|
|
fs.Write(packet.Chunk, 0, packet.ChunkSize);
|
|
currentSize += packet.ChunkSize;
|
|
packetsReceived += 1;
|
|
//Console.WriteLine(currentSize);
|
|
}
|
|
}
|
|
}
|