Start on File Transfer Packets & Handler Implementation
This commit is contained in:
57
MOE Builder Client/Handlers/FileTransferHandler.cs
Normal file
57
MOE Builder Client/Handlers/FileTransferHandler.cs
Normal file
@ -0,0 +1,57 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user