static void UploadFile(Stream stream, FileInfo fileInfo, bool closeServer) { Console.WriteLine("About to transfer file '{0}' of size {1} ", fileInfo.FullName, fileInfo.Length); var request = new TransferFileJobRequest { FileName = fileInfo.Name, Size = (ulong)fileInfo.Length, IsDone = closeServer, DownloadFromServer = false, }; SendReceiveHelper.SendTransferRequest(stream, request); var response = SendReceiveHelper.GetTransferFileJobResponse(stream); if (response.Status != 0) { throw new InvalidOperationException($"Error from server: {response.Status}"); } Console.WriteLine("Transferring file"); using (var file = File.OpenRead(fileInfo.FullName)) { file.CopyTo(stream); } Console.WriteLine("File '{0}' sent!", fileInfo.Name); }
static long DownloadFile(Stream stream, string fileName, bool closeServer, Action <long> onStarted) { Console.WriteLine("About to download file '{0}'", fileName); var request = new TransferFileJobRequest { FileName = fileName, IsDone = closeServer, DownloadFromServer = true, }; SendReceiveHelper.SendTransferRequest(stream, request); var response = SendReceiveHelper.GetTransferFileJobResponse(stream); if (response.Status != 0) { throw new InvalidOperationException($"Error from server: {response.Status}"); } var length = (long)response.Size; onStarted?.Invoke(length); var fi = new FileInfo(fileName); Console.WriteLine($"Downloading file {fi.Name} of size {length}"); using (var file = File.OpenWrite(fi.Name)) { stream.CopyTo(file); } Console.WriteLine("File '{0}' received", fileName); return(length); }
public void SendTransferFileResponse_Test() { using (var ms = new MemoryStream()) { SendReceiveHelper.SendTransferFileJobResponse(ms, new TransferFileJobResponse() { Size = 33, Status = 33 }); ms.Position = 0; var req = SendReceiveHelper.GetTransferFileJobResponse(ms); Assert.AreEqual(req.Size, 33U); Assert.AreEqual(req.Status, 33); } }