using System;
using Renci.SshNet.Channels;
using Renci.SshNet.Common;
using Renci.SshNet.Messages;
using Renci.SshNet.Messages.Authentication;
namespace Renci.SshNet
{
///
/// Provides functionality to connect and interact with SSH server.
///
internal interface ISession
{
/////
///// Gets or sets the connection info.
/////
///// The connection info.
IConnectionInfo ConnectionInfo { get; }
///
/// Create a new SSH session channel.
///
///
/// A new SSH session channel.
///
IChannelSession CreateChannelSession();
///
/// Registers SSH message with the session.
///
/// The name of the message to register with the session.
void RegisterMessage(string messageName);
///
/// Sends a message to the server.
///
/// The message to send.
/// The client is not connected.
/// The operation timed out.
/// The size of the packet exceeds the maximum size defined by the protocol.
void SendMessage(Message message);
///
/// Unregister SSH message from the session.
///
/// The name of the message to unregister with the session.
void UnRegisterMessage(string messageName);
///
/// Occurs when session has been disconnected from the server.
///
event EventHandler Disconnected;
///
/// Occurs when an error occurred.
///
event EventHandler ErrorOccured;
///
/// Occurs when message is received from the server.
///
event EventHandler> UserAuthenticationBannerReceived;
}
}