Esempio n. 1
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);
        }
Esempio n. 2
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);
        }