コード例 #1
0
ファイル: FtpManager.cs プロジェクト: DrOuSS/CnDCopy
        public void BeginRetreive(ILocation sourceLocation, Action<byte[]> bufferCallback, Action copyDone)
        {
            var ftpRequest = new FtpDownloadRequest (BufferSize);
            ftpRequest.Buffering += bufferCallback;
            ftpRequest.CopyDone += copyDone;

            GetFileSize (sourceLocation, ftpRequest);
            BeginDownload (sourceLocation, ftpRequest);
        }
コード例 #2
0
ファイル: FtpManager.cs プロジェクト: DrOuSS/CnDCopy
        private void BeginDownload(ILocation source, FtpDownloadRequest ftpRequest)
        {
            ftpRequest.Request = CreateRequest (source.ItemUri, WebRequestMethods.Ftp.DownloadFile, Credentials);
            ftpRequest.Response = (FtpWebResponse)ftpRequest.Request.GetResponse ();

            ftpRequest.FileStream = ftpRequest.Response.GetResponseStream ();
            ftpRequest.Buffer = new byte[BufferSize];

            Debug.Assert (ftpRequest.FileStream != null, "FileStream shall be not null.");
            ftpRequest.FileStream.BeginRead (ftpRequest.Buffer, 0, BufferSize, DownloadCallback, ftpRequest);
        }
コード例 #3
0
ファイル: FtpManager.cs プロジェクト: DrOuSS/CnDCopy
 private void GetFileSize(ILocation source, FtpDownloadRequest ftpRequest)
 {
     ftpRequest.Request = CreateRequest (source.ItemUri, WebRequestMethods.Ftp.GetFileSize, Credentials);
     using (var response = ftpRequest.Request.GetResponse())
         ftpRequest.FileSize = response.ContentLength;
 }
コード例 #4
0
ファイル: FtpManager.cs プロジェクト: DrOuSS/CnDCopy
        public override long GetSize(ILocation location)
        {
            if (!location.IsFolder) {
                var ftpRequest = new FtpDownloadRequest (BufferSize);
                GetFileSize (location, ftpRequest);

                return ftpRequest.FileSize;
            } else
                throw new NotImplementedException ();
        }