Ejemplo n.º 1
0
        /// <summary> Downloads file from host using StreamChannel</summary>
        /// <param name="Filename">Specifies the filename to download</param>
        public void DownloadFile(string Filename,
                                 FileTransferMessage.FileType Type, string ChannelName)
        {
            if (StreamingChannels[ChannelName] == null)
            {
                Console.Write("\n Unable to find the specified channel \"{0}\"", ChannelName);
                return;
            }
            string rfilename;

            switch (Type)
            {
            case FileTransferMessage.FileType.Library:
                rfilename = Path.Combine(FilesPath, Filename);
                break;

            case FileTransferMessage.FileType.Result:
                rfilename = Path.Combine(ResultsPath, Filename);
                break;

            default:
                return;
            }
            try {
                Stream strm = StreamingChannels[ChannelName].DownloadFile(Filename, Type);
                int    BlockSize = 1024; byte[] block = new byte[BlockSize];
                // Make sure directories to save the downloaded file exist
                if (!Directory.Exists(FilesPath))
                {
                    Directory.CreateDirectory(FilesPath);
                }
                if (!Directory.Exists(ResultsPath))
                {
                    Directory.CreateDirectory(ResultsPath);
                }
                using (var outputStream = new FileStream(rfilename, FileMode.Create)) {
                    while (true)
                    {
                        int bytesRead = strm.Read(block, 0, BlockSize);
                        if (bytesRead > 0)
                        {
                            outputStream.Write(block, 0, bytesRead);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                Console.Write("\n  Received file \"{0}\"", Filename);
            } catch (Exception) {
                Console.Write("\n  Failed to get file \"{0}\" from server", Filename);
            }
        }
Ejemplo n.º 2
0
        // streaming service methods region
        #region
        /// <summary> Sends file to host using StreamChannel</summary>
        /// <param name="FilePath">Specifies the path of the file to send</param>
        public void UploadFile(string FilePath, FileTransferMessage.FileType Type
                               , string ChannelName)
        {
            if (StreamingChannels[ChannelName] == null)
            {
                Console.Write("\n Unable to find the specifies channel \"{0}\"", ChannelName);
                return;
            }
            string Filename = Path.GetFileName(FilePath);

            using (var inputStream = new FileStream(FilePath, FileMode.Open)) {
                // Prepare file streaming message
                FileTransferMessage msg = new FileTransferMessage();
                msg.Type           = Type;
                msg.Filename       = Filename;
                msg.TransferStream = inputStream;
                // Send the message
                StreamingChannels[ChannelName].UploadFile(msg);
            }
        }
Ejemplo n.º 3
0
        public Stream DownloadFile(string Filename, FileTransferMessage.FileType Type)
        {
            string sfilename;

            switch (Type)
            {
            case FileTransferMessage.FileType.Library:
                sfilename = Path.Combine(FilesPath, Filename);
                break;

            case FileTransferMessage.FileType.Result:
                sfilename = Path.Combine(ResultsPath, Filename);
                break;

            case FileTransferMessage.FileType.ConnectionTest:
                sfilename = Path.Combine(Directory.GetCurrentDirectory(), Filename);
                break;

            default:
                return(null);
            }
            FileStream outStream = null;

            if (File.Exists(sfilename))
            {
                Console.Write("\n  Sending File \"{0}\" ... ", Filename);
                try {
                    outStream = new FileStream(sfilename, FileMode.Open);
                } catch (Exception ex) {
                    Console.Write("Failed\n\tDetails: {0}\n", ex.Message);
                }
            }
            else
            {
                Console.Write("\n  Cannot find file \"{0}\" in \"{1}\"", Filename, Directory.GetParent(sfilename));
                throw new FileNotFoundException("Failed to find \"" + Filename + "\"");
            }
            return(outStream);
        }