using System;
using System.Threading;
using Renci.SshNet.Common;
namespace Renci.SshNet
{
///
/// Base interface for SSH subsystem implementations.
///
internal interface ISubsystemSession : IDisposable
{
///
/// Gets a value indicating whether this session is open.
///
///
/// true if this session is open; otherwise, false.
///
bool IsOpen { get; }
///
/// Connects the subsystem using a new SSH channel session.
///
/// The session is already connected.
/// The method was called after the session was disposed.
void Connect();
///
/// Disconnects the subsystem channel.
///
void Disconnect();
///
/// Waits a specified time for a given to get signaled.
///
/// The handle to wait for.
/// The time to wait for to get signaled.
/// The connection was closed by the server.
/// The channel was closed.
/// The handle did not get signaled within the specified .
void WaitOnHandle(WaitHandle waitHandle, TimeSpan operationTimeout);
}
}