コード例 #1
0
ファイル: FtpBase.cs プロジェクト: EncompassTechnologies/Biko
        internal void SendRequest(FtpRequest request)
        {
            if (_commandConn == null || _commandConn.Connected == false)
            {
                throw new FtpConnectionClosedException("Connection is closed.");
            }

            DontWaitForHappyCodes();

            if (ClientRequest != null)
            {
                ClientRequest(this, new FtpRequestEventArgs(request));
            }

            byte[] buffer = request.GetBytes();

            try
            {
                _commandStream.Write(buffer, 0, buffer.Length);
            }
            catch (IOException ex)
            {
                throw new FtpConnectionBrokenException("Connection is broken.  Failed to send command.", ex);
            }

            if (request.HasHappyCodes)
            {
                WaitForHappyCodes(request.GetHappyCodes());
            }
            else
            {
                if (request.Command != FtpCmd.Quit)
                {
                    Thread.Sleep(2000);
                }

                DontWaitForHappyCodes();
            }
        }