Exemple #1
0
        public void AsyncReadCallback(IAsyncResult ar)
        {
            try
            {
                int bytesRecieved = 0;

                if (_disposed)
                {
                    return;
                }
                try
                {
                    bytesRecieved = this._stream.EndRead(ar);
                }
                catch (ObjectDisposedException e)
                {
                    return;
                }

                if (bytesRecieved == 0)
                {
                    TcpNetworkGateway.DisposeClient(this);
                    return;
                }
                _inputDataStream.Write(_inputBuffer, 0, bytesRecieved);

                _stream.BeginRead(_inputBuffer, 0, MAX_BUFFER_SIZE, new AsyncCallback(AsyncReadCallback), null);

                lock (_parser)
                {
                    if (_parser.Alive)
                    {
                        return;
                    }
                    _parser.Alive = true;
                }
                _parser.StartParser();
            }
            catch (Exception e)
            {
                _logManager.Error("TcpClientHandler.AsyncReadCallback()", "\tError in client handler." + e.Message);
                TcpNetworkGateway.DisposeClient(this);
            }
        }