コード例 #1
0
        private void ConfigurationStreamRequestEndGetResponse(IAsyncResult ar)
        {
            try
            {
                var request  = (WebRequest)ar.AsyncState;
                var response = request.EndGetResponse(ar);

                // Allocate new string reader and start reading
                _linesStreamReader          = new AsyncLinesStreamReader(response.GetResponseStream());
                _linesStreamReader.OnError += HandleLinesStreamError;
                _linesStreamReader.OnChunk += HandleConfigurationUpdate;

                _linesStreamReader.StartReading();
            }
            catch (Exception e)
            {
                if (OnError != null)
                {
                    OnError(e);
                }

                // Handle HTTP query errors by trying another host
                RetryConnectingToConfigurationStream(1);
            }
        }
コード例 #2
0
        public void SetUp()
        {
            _errors = _chunks = 0;

            _stream = Stream.Synchronized(new MemoryStream());

            _reader          = new AsyncLinesStreamReader(_stream);
            _reader.OnError += _ => { _errors++; };
            _reader.OnChunk += _ => { _chunks++; };

            _reader.StartReading();
        }
コード例 #3
0
        public void SetUp()
        {
            var localCounters = new TestCounters();

            _counters = localCounters;

            _pipe            = new Aqueduct();
            _reader          = new AsyncLinesStreamReader(_pipe.Out);
            _reader.OnError += e => { localCounters.IncrementErrors(); Console.Error.WriteLine(e.Message); Console.Error.WriteLine(e.StackTrace); };
            _reader.OnChunk += _ => { localCounters.IncrementChunks(); };

            _reader.StartReading();
        }
コード例 #4
0
        private void ConfigurationStreamRequestEndGetResponse(IAsyncResult ar)
        {
            if (_linesStreamReader != null)
            {
                OnError(new MemcacheException("Sanity check: The previous AsyncLinesStreamReader was not disposed"));
                return;
            }
            if (_webResponse != null)
            {
                OnError(new MemcacheException("Sanity check: The previous WebResponse was not disposed"));
                return;
            }

            WebResponse            response          = null;
            AsyncLinesStreamReader linesStreamReader = null;

            try
            {
                var request = (WebRequest)ar.AsyncState;
                response = request.EndGetResponse(ar);

                // Allocate new string reader and start reading
                linesStreamReader          = new AsyncLinesStreamReader(response.GetResponseStream());
                linesStreamReader.OnError += HandleLinesStreamError;
                linesStreamReader.OnChunk += HandleConfigurationUpdate;

                lock (this)
                    if (!_isDisposed)
                    {
                        _webResponse       = response;
                        _linesStreamReader = linesStreamReader;
                    }
                    else
                    {
                        response.Dispose();
                        linesStreamReader.Dispose();
                        return;
                    }

                _linesStreamReader.StartReading();
            }
            catch (Exception e)
            {
                if (OnError != null)
                {
                    OnError(e);
                }

                if (response != null)
                {
                    response.Dispose();
                }
                _webResponse = null;

                if (linesStreamReader != null)
                {
                    linesStreamReader.Dispose();
                }
                _linesStreamReader = null;

                // Handle HTTP query errors by trying another host
                RetryConnectingToConfigurationStream(delaySeconds: 1.0);
            }
        }