From d97f30a745348688f1e0dd61d450b175cd0dea45 Mon Sep 17 00:00:00 2001 From: olegkap_cp Date: Thu, 18 Nov 2010 21:47:59 +0000 Subject: [PATCH] Add Channel events to prepare for further refactoring --- .../Renci.SshClient/Channels/Channel.cs | 92 ++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) 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