diff --git a/Renci.SshClient/Renci.SshClient/Channels/Channel.cs b/Renci.SshClient/Renci.SshClient/Channels/Channel.cs
index 006c04c2..db27d091 100644
--- a/Renci.SshClient/Renci.SshClient/Channels/Channel.cs
+++ b/Renci.SshClient/Renci.SshClient/Channels/Channel.cs
@@ -36,6 +36,65 @@ namespace Renci.SshClient.Channels
public bool IsOpen { get; private set; }
+ #region Message events
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler> Opening;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler> Opened;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler OpenFailed;
+
+ /////
+ ///// Occurs when message received
+ /////
+ //public event EventHandler> ChannelWindowAdjustReceived;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler DataReceived;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler ExtendedDataReceived;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler EndOfData;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler Closed;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler> RequestReceived;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler RequestSuccessed;
+
+ ///
+ /// Occurs when message received
+ ///
+ public event EventHandler RequestFailed;
+
+ #endregion
+
protected bool IsConnected
{
get { return this._session.IsConnected; }
@@ -123,7 +182,7 @@ namespace Renci.SshClient.Channels
#region Channel virtual methods
- protected virtual void OnOpen(ChannelTypes channelTypes, uint initialWindowSize, uint maximumPacketSize, string connectedAddress, uint connectedPort, string originatorAddress, uint originatorPort)
+ protected virtual void OnOpen(ChannelTypes channelType, uint initialWindowSize, uint maximumPacketSize, string connectedAddress, uint connectedPort, string originatorAddress, uint originatorPort)
{
}
@@ -138,6 +197,10 @@ namespace Renci.SshClient.Channels
protected virtual void OnOpenFailure(uint reasonCode, string description, string language)
{
+ if (this.OpenFailed != null)
+ {
+ this.OpenFailed(this, new ChannelOpenFailedEventArgs(this.LocalChannelNumber, reasonCode, description, language));
+ }
}
protected virtual void OnWindowAdjust(uint bytesToAdd)
@@ -149,15 +212,29 @@ namespace Renci.SshClient.Channels
protected virtual void OnData(string data)
{
this.AdjustDataWindow(data);
+
+ if (this.DataReceived != null)
+ {
+ this.DataReceived(this, new ChannelDataEventArgs(this.LocalChannelNumber, data));
+ }
}
protected virtual void OnExtendedData(string data, uint dataTypeCode)
{
this.AdjustDataWindow(data);
+
+ if (this.ExtendedDataReceived != null)
+ {
+ this.ExtendedDataReceived(this, new ChannelDataEventArgs(this.LocalChannelNumber, data, dataTypeCode));
+ }
}
protected virtual void OnEof()
{
+ if (this.EndOfData != null)
+ {
+ this.EndOfData(this, new ChannelEventArgs(this.LocalChannelNumber));
+ }
}
protected virtual void OnClose()
@@ -165,6 +242,11 @@ namespace Renci.SshClient.Channels
this.CloseCleanup();
this._channelClosedWaitHandle.Set();
+
+ if (this.Closed != null)
+ {
+ this.Closed(this, new ChannelEventArgs(this.LocalChannelNumber));
+ }
}
protected virtual void OnRequest(ChannelRequestMessage message)
@@ -173,10 +255,18 @@ namespace Renci.SshClient.Channels
protected virtual void OnSuccess()
{
+ if (this.RequestSuccessed != null)
+ {
+ this.RequestSuccessed(this, new ChannelEventArgs(this.LocalChannelNumber));
+ }
}
protected virtual void OnFailure()
{
+ if (this.RequestFailed != null)
+ {
+ this.RequestFailed(this, new ChannelEventArgs(this.LocalChannelNumber));
+ }
}
#endregion