Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="asyncResult"></param>
        void AsyncReadResponseStreamCallback(IAsyncResult asyncResult)
        {
            var _context = asyncResult.AsyncState as ExternalActionContext;

            try
            {
                int _read = _context.EndReadResponseStream(asyncResult);

                if (0 < _read)
                {
                    if (null != _context.DestinationStream)
                    {
                        _context.BeginWriteDestinationSteam(0, _read, x => AsyncWriteDestinationStreamCallback(x));
                        return;
                    }

                    _context.BeginReadResponseStream(0, BUFFER_SIZE, x => AsyncReadResponseStreamCallback(x));
                    return;
                }

                _context.Result = FtpResult.Parse(_context.Response as FtpWebResponse);
                _context.Dispose();

                RaiseActionCompletedEvent(_context);

                _waitHandle.Set();
            }
            catch (Exception ex)
            {
                HandleThrownException(_context, ex);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="asyncResult"></param>
        void AsyncGetResponseCallback(IAsyncResult asyncResult)
        {
            var _context = asyncResult.AsyncState as ExternalActionContext;

            try
            {
                var _response = _context.EndGetResponse(asyncResult) as FtpWebResponse;

                if (_context.ReadToEnd)
                {
                    _context.BeginReadResponseStream(0, BUFFER_SIZE, x => AsyncReadResponseStreamCallback(x));
                    return;
                }

                _context.Result = FtpResult.Parse(_response);
                _context.Dispose();

                RaiseActionCompletedEvent(_context);

                _waitHandle.Set();
            }
            catch (Exception ex)
            {
                HandleThrownException(_context, ex);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="ex"></param>
        void HandleThrownException(ExternalActionContext context, Exception ex)
        {
            context.Result = FtpResult.Parse(ex);

            if (null != context)
            {
                context.Dispose();
            }

            if (null != _waitHandle)
            {
                _waitHandle.Set();
            }

            RaiseActionFailedEvent(context);
        }