internal FtpDataTransferException(string message, FtpResponse ftpResponse) : base(message, ftpResponse) { }
internal FtpResumeNotSupportedException(FtpResponse ftpResponse) : base("Data transfer error: server does not support resuming.", ftpResponse) { }
internal FtpServerDownException(string message, FtpResponse ftpResponse) : base(message, ftpResponse) { }
internal FtpCommandException(string message, FtpResponse ftpResponse) : base(message, ftpResponse) { }
internal FtpAuthenticationException(string message, FtpResponse ftpResponse) : base(message, ftpResponse) { }
internal FtpServerDownException(FtpResponse ftpResponse) : this("FTP service was down.", ftpResponse) { }
internal FtpInvalidResponseException(string message, FtpResponse ftpResponse) : base(message, ftpResponse) { }
internal FtpExceptionBase(string message, FtpResponse ftpResponse) : base(message) { m_ftpResponse = ftpResponse; }
/// <summary> /// Refresh response from control channel. /// </summary> public void RefreshResponse() { lock (this) { m_lastResponse = new FtpResponse(m_connection.GetStream()); } foreach (string s in m_lastResponse.Respones) { m_sessionHost.OnResponseReceived(s); } }
/// <summary> /// Connects the <see cref="FtpControlChannel"/>. /// </summary> public void Connect() { m_connection.Connect(m_server, m_port); try { m_lastResponse = new FtpResponse(m_connection.GetStream()); if (m_lastResponse.Code != FtpResponse.ServiceReady) throw new FtpServerDownException("FTP service unavailable.", m_lastResponse); } catch { Close(); throw; } }
/// <summary> /// Releases the unmanaged resources used by the <see cref="FtpControlChannel"/> object and optionally releases the managed resources. /// </summary> /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (!m_disposed) { try { // This will be done regardless of whether the object is finalized or disposed. if (disposing) { m_lastResponse = null; if (m_connection != null) m_connection.Close(); m_connection = null; } } finally { m_disposed = true; // Prevent duplicate dispose. } } }