Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public void TransferRequest_Test()
        {
            var fn = "Boo";

            using (var ms = new MemoryStream())
            {
                SendReceiveHelper.SendTransferRequest(ms, new TransferFileJobRequest
                {
                    FileName = fn,
                    Size     = 33,
                });

                ms.Position = 0;

                var req = SendReceiveHelper.GetTransferRequest(ms);

                Assert.AreEqual(req.Size, 33UL);
                Assert.AreEqual(req.FileName, fn);
            }
        }