|
|
@@ -0,0 +1,108 @@
|
|
|
+using Renci.SshNet.Common;
|
|
|
+using System;
|
|
|
+using System.Net.Sockets;
|
|
|
+using System.Threading;
|
|
|
+#if FEATURE_TAP
|
|
|
+using System.Threading.Tasks;
|
|
|
+#endif
|
|
|
+
|
|
|
+namespace Renci.SshNet
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// Serves as base class for client implementations, provides common client functionality.
|
|
|
+ /// </summary>
|
|
|
+ public interface IBaseClient
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// Gets the connection info.
|
|
|
+ /// </summary>
|
|
|
+ /// <value>
|
|
|
+ /// The connection info.
|
|
|
+ /// </value>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ ConnectionInfo ConnectionInfo { get; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Gets a value indicating whether this client is connected to the server.
|
|
|
+ /// </summary>
|
|
|
+ /// <value>
|
|
|
+ /// <c>true</c> if this client is connected; otherwise, <c>false</c>.
|
|
|
+ /// </value>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ bool IsConnected { get; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Gets or sets the keep-alive interval.
|
|
|
+ /// </summary>
|
|
|
+ /// <value>
|
|
|
+ /// The keep-alive interval. Specify negative one (-1) milliseconds to disable the
|
|
|
+ /// keep-alive. This is the default value.
|
|
|
+ /// </value>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ TimeSpan KeepAliveInterval { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Occurs when an error occurred.
|
|
|
+ /// </summary>
|
|
|
+ /// <example>
|
|
|
+ /// <code source="..\..\src\Renci.SshNet.Tests\Classes\SshClientTest.cs" region="Example SshClient Connect ErrorOccurred" language="C#" title="Handle ErrorOccurred event" />
|
|
|
+ /// </example>
|
|
|
+ event EventHandler<ExceptionEventArgs> ErrorOccurred;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Occurs when host key received.
|
|
|
+ /// </summary>
|
|
|
+ /// <example>
|
|
|
+ /// <code source="..\..\src\Renci.SshNet.Tests\Classes\SshClientTest.cs" region="Example SshClient Connect HostKeyReceived" language="C#" title="Handle HostKeyReceived event" />
|
|
|
+ /// </example>
|
|
|
+ event EventHandler<HostKeyEventArgs> HostKeyReceived;
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Connects client to the server.
|
|
|
+ /// </summary>
|
|
|
+ /// <exception cref="InvalidOperationException">The client is already connected.</exception>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ /// <exception cref="SocketException">Socket connection to the SSH server or proxy server could not be established, or an error occurred while resolving the hostname.</exception>
|
|
|
+ /// <exception cref="SshConnectionException">SSH session could not be established.</exception>
|
|
|
+ /// <exception cref="SshAuthenticationException">Authentication of SSH session failed.</exception>
|
|
|
+ /// <exception cref="ProxyException">Failed to establish proxy connection.</exception>
|
|
|
+ void Connect();
|
|
|
+
|
|
|
+#if FEATURE_TAP
|
|
|
+ /// <summary>
|
|
|
+ /// Asynchronously connects client to the server.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="cancellationToken">The <see cref="CancellationToken"/> to observe.</param>
|
|
|
+ /// <returns>A <see cref="Task"/> that represents the asynchronous connect operation.
|
|
|
+ /// </returns>
|
|
|
+ /// <exception cref="InvalidOperationException">The client is already connected.</exception>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ /// <exception cref="SocketException">Socket connection to the SSH server or proxy server could not be established, or an error occurred while resolving the hostname.</exception>
|
|
|
+ /// <exception cref="SshConnectionException">SSH session could not be established.</exception>
|
|
|
+ /// <exception cref="SshAuthenticationException">Authentication of SSH session failed.</exception>
|
|
|
+ /// <exception cref="ProxyException">Failed to establish proxy connection.</exception>
|
|
|
+ Task ConnectAsync(CancellationToken cancellationToken);
|
|
|
+#endif
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Disconnects client from the server.
|
|
|
+ /// </summary>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ void Disconnect();
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
|
|
+ /// </summary>
|
|
|
+ void Dispose();
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Sends a keep-alive message to the server.
|
|
|
+ /// </summary>
|
|
|
+ /// <remarks>
|
|
|
+ /// Use <see cref="KeepAliveInterval"/> to configure the client to send a keep-alive at regular
|
|
|
+ /// intervals.
|
|
|
+ /// </remarks>
|
|
|
+ /// <exception cref="ObjectDisposedException">The method was called after the client was disposed.</exception>
|
|
|
+ void SendKeepAlive();
|
|
|
+ }
|
|
|
+}
|