Files
Mass-Imaging-Tool/MOE Builder Client/Handlers/FileTransferHandler.cs

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);
}
}
}