public void SftpListDirectoryAsyncResultConstructorTest() { AsyncCallback asyncCallback = null; // TODO: Initialize to an appropriate value object state = null; // TODO: Initialize to an appropriate value SftpListDirectoryAsyncResult target = new SftpListDirectoryAsyncResult(asyncCallback, state); Assert.Inconclusive("TODO: Implement code to verify target"); }
public void SftpListDirectoryAsyncResultConstructorTest() { AsyncCallback asyncCallback = null; // TODO: Initialize to an appropriate value object state = null; // TODO: Initialize to an appropriate value SftpListDirectoryAsyncResult target = new SftpListDirectoryAsyncResult(asyncCallback, state); Assert.Inconclusive("TODO: Implement code to verify target"); }
/// <summary> /// Begins an asynchronous operation of retrieving list of files in remote directory. /// </summary> /// <param name="path">The path.</param> /// <param name="asyncCallback">The method to be called when the asynchronous write operation is completed.</param> /// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests.</param> /// <param name="listCallback">The list callback.</param> /// <returns> /// An <see cref="IAsyncResult" /> that references the asynchronous operation. /// </returns> /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception> public IAsyncResult BeginListDirectory(string path, AsyncCallback asyncCallback, object state, Action<int> listCallback = null) { CheckDisposed(); var asyncResult = new SftpListDirectoryAsyncResult(asyncCallback, state); ExecuteThread(() => { try { var result = InternalListDirectory(path, count => { asyncResult.Update(count); if (listCallback != null) { listCallback(count); } }); asyncResult.SetAsCompleted(result, false); } catch (Exception exp) { asyncResult.SetAsCompleted(exp, false); } }); return asyncResult; }
/// <summary> /// Begins an asynchronous operation of retrieving list of files in remote directory. /// </summary> /// <param name="path">The path.</param> /// <param name="asyncCallback">The method to be called when the asynchronous write operation is completed.</param> /// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests.</param> /// <returns> /// An <see cref="IAsyncResult"/> that references the asynchronous operation. /// </returns> public IAsyncResult BeginListDirectory(string path, AsyncCallback asyncCallback, object state) { var asyncResult = new SftpListDirectoryAsyncResult(asyncCallback, state); this.ExecuteThread(() => { try { var result = this.InternalListDirectory(path, asyncResult); asyncResult.SetAsCompleted(result, false); } catch (Exception exp) { asyncResult.SetAsCompleted(exp, false); } }); return asyncResult; }
/// <exception cref="ArgumentNullException"><paramref name="path"/> is <b>null</b>.</exception> /// <exception cref="SshConnectionException">Client not connected.</exception> private IEnumerable<SftpFile> InternalListDirectory(string path, SftpListDirectoryAsyncResult asynchResult) { if (path == null) throw new ArgumentNullException("path"); // Ensure that connection is established. this.EnsureConnection(); var fullPath = this._sftpSession.GetCanonicalPath(path); var handle = this._sftpSession.RequestOpenDir(fullPath); var basePath = fullPath; if (!basePath.EndsWith("/")) basePath = string.Format("{0}/", fullPath); var result = new List<SftpFile>(); var files = this._sftpSession.RequestReadDir(handle); while (files != null) { result.AddRange(from f in files select new SftpFile(this._sftpSession, string.Format(CultureInfo.InvariantCulture, "{0}{1}", basePath, f.Key), f.Value)); if (asynchResult != null) { asynchResult.Update(result.Count); } files = this._sftpSession.RequestReadDir(handle); } this._sftpSession.RequestClose(handle); return result; }