diff src/org/eclipse/jetty/server/AsyncHttpConnection.java @ 963:4b6216fa9cec

replace SelectChannelEndPoint._state with isDispatched
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 14 Oct 2016 00:15:28 -0600
parents 1094975d013b
children 866f2e801618
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/AsyncHttpConnection.java	Thu Oct 13 22:56:15 2016 -0600
+++ b/src/org/eclipse/jetty/server/AsyncHttpConnection.java	Fri Oct 14 00:15:28 2016 -0600
@@ -37,159 +37,159 @@
  */
 public class AsyncHttpConnection extends AbstractHttpConnection implements AsyncConnection
 {
-    private final static int NO_PROGRESS_INFO = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_INFO",100);
-    private final static int NO_PROGRESS_CLOSE = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_CLOSE",200);
+	private final static int NO_PROGRESS_INFO = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_INFO",100);
+	private final static int NO_PROGRESS_CLOSE = Integer.getInteger("org.mortbay.jetty.NO_PROGRESS_CLOSE",200);
 
-    private static final Logger LOG = LoggerFactory.getLogger(AsyncHttpConnection.class);
-    private int _total_no_progress;
-    private final AsyncEndPoint _asyncEndp;
-    private boolean _readInterested = true;
+	private static final Logger LOG = LoggerFactory.getLogger(AsyncHttpConnection.class);
+	private int _total_no_progress;
+	private final AsyncEndPoint _asyncEndp;
+	private boolean _readInterested = true;
 
-    public AsyncHttpConnection(Connector connector, EndPoint endpoint, Server server)
-    {
-        super(connector,endpoint,server);
-        _asyncEndp=(AsyncEndPoint)endpoint;
-    }
+	public AsyncHttpConnection(Connector connector, EndPoint endpoint, Server server)
+	{
+		super(connector,endpoint,server);
+		_asyncEndp=(AsyncEndPoint)endpoint;
+	}
 
-    @Override
-    public Connection handle() throws IOException
-    {
-        Connection connection = this;
-        boolean some_progress=false;
-        boolean progress=true;
+	@Override
+	public Connection handle() throws IOException
+	{
+		Connection connection = this;
+		boolean some_progress = false;
+		boolean progress = true;
 
-        try
-        {
-            setCurrentConnection(this);
+		try
+		{
+			setCurrentConnection(this);
 
-            // While progress and the connection has not changed
-            while (progress && connection==this)
-            {
-                progress=false;
-                try
-                {
-                    // Parse more input
-                    if (!_parser.isComplete() && _parser.parseAvailable())
-                        progress=true;
+			// While progress and the connection has not changed
+			while (progress && connection==this)
+			{
+				progress=false;
+				try
+				{
+					// Parse more input
+					if (!_parser.isComplete() && _parser.parseAvailable())
+						progress = true;
 
-                    // Generate more output
-                    if (_generator.isCommitted() && !_generator.isComplete() && !_endp.isOutputShutdown())
-                        if (_generator.flushBuffer()>0)
-                            progress=true;
+					// Generate more output
+					if (_generator.isCommitted() && !_generator.isComplete() && !_endp.isOutputShutdown())
+						if (_generator.flushBuffer()>0)
+							progress = true;
 
-                    // Flush output
-                    _endp.flush();
+					// Flush output
+					_endp.flush();
 
-                    // Has any IO been done by the endpoint itself since last loop
-                    if (_asyncEndp.hasProgressed())
-                        progress=true;
-                }
-                catch (HttpException e)
-                {
-                    if (LOG.isDebugEnabled())
-                    {
-                        LOG.debug("uri="+_uri);
-                        LOG.debug("fields="+_requestFields);
-                        LOG.debug("",e);
-                    }
-                    progress=true;
-                    _generator.sendError(e.getStatus(), e.getReason(), null, true);
-                }
-                finally
-                {
-                    some_progress|=progress;
-                    //  Is this request/response round complete and are fully flushed?
-                    boolean parserComplete = _parser.isComplete();
-                    boolean generatorComplete = _generator.isComplete();
-                    boolean complete = parserComplete && generatorComplete;
-                    if (parserComplete)
-                    {
-                        if (generatorComplete)
-                        {
-                            // Reset the parser/generator
-                            progress=true;
+					// Has any IO been done by the endpoint itself since last loop
+					if (_asyncEndp.hasProgressed())
+						progress = true;
+				}
+				catch (HttpException e)
+				{
+					if (LOG.isDebugEnabled())
+					{
+						LOG.debug("uri="+_uri);
+						LOG.debug("fields="+_requestFields);
+						LOG.debug("",e);
+					}
+					progress = true;
+					_generator.sendError(e.getStatus(), e.getReason(), null, true);
+				}
+				finally
+				{
+					some_progress |= progress;
+					//  Is this request/response round complete and are fully flushed?
+					boolean parserComplete = _parser.isComplete();
+					boolean generatorComplete = _generator.isComplete();
+					boolean complete = parserComplete && generatorComplete;
+					if (parserComplete)
+					{
+						if (generatorComplete)
+						{
+							// Reset the parser/generator
+							progress=true;
 
-                            // look for a switched connection instance?
-                            if (_response.getStatus()==HttpStatus.SWITCHING_PROTOCOLS_101)
-                            {
-                                Connection switched=(Connection)_request.getAttribute("org.eclipse.jetty.io.Connection");
-                                if (switched!=null)
-                                    connection=switched;
-                            }
+							// look for a switched connection instance?
+							if (_response.getStatus()==HttpStatus.SWITCHING_PROTOCOLS_101)
+							{
+								Connection switched=(Connection)_request.getAttribute("org.eclipse.jetty.io.Connection");
+								if (switched!=null)
+									connection=switched;
+							}
 
-                            reset();
+							reset();
 
-                            // TODO Is this still required?
-                            if (!_generator.isPersistent() && !_endp.isOutputShutdown())
-                            {
-                                LOG.warn("Safety net oshut!!!  IF YOU SEE THIS, PLEASE RAISE BUGZILLA");
-                                _endp.shutdownOutput();
-                            }
-                        }
-                        else
-                        {
-                            // We have finished parsing, but not generating so
-                            // we must not be interested in reading until we
-                            // have finished generating and we reset the generator
-                            _readInterested = false;
-                            LOG.debug("Disabled read interest while writing response {}", _endp);
-                        }
-                    }
-                }
-            }
-        }
-        finally
-        {
-            setCurrentConnection(null);
+							// TODO Is this still required?
+							if (!_generator.isPersistent() && !_endp.isOutputShutdown())
+							{
+								LOG.warn("Safety net oshut!!!  IF YOU SEE THIS, PLEASE RAISE BUGZILLA");
+								_endp.shutdownOutput();
+							}
+						}
+						else
+						{
+							// We have finished parsing, but not generating so
+							// we must not be interested in reading until we
+							// have finished generating and we reset the generator
+							_readInterested = false;
+							LOG.debug("Disabled read interest while writing response {}", _endp);
+						}
+					}
+				}
+			}
+		}
+		finally
+		{
+			setCurrentConnection(null);
 
-            // return buffers
-            _parser.returnBuffers();
-            _generator.returnBuffers();
+			// return buffers
+			_parser.returnBuffers();
+			_generator.returnBuffers();
 
-            // Safety net to catch spinning
-            if (some_progress)
-                _total_no_progress=0;
-            else
-            {
-                _total_no_progress++;
-                if (NO_PROGRESS_INFO>0 && _total_no_progress%NO_PROGRESS_INFO==0 && (NO_PROGRESS_CLOSE<=0 || _total_no_progress< NO_PROGRESS_CLOSE))
-                    LOG.info("EndPoint making no progress: "+_total_no_progress+" "+_endp+" "+this);
-                if (NO_PROGRESS_CLOSE>0 && _total_no_progress==NO_PROGRESS_CLOSE)
-                {
-                    LOG.warn("Closing EndPoint making no progress: "+_total_no_progress+" "+_endp+" "+this);
-                    if (_endp instanceof SelectChannelEndPoint)
-                        ((SelectChannelEndPoint)_endp).getChannel().close();
-                }
-            }
-        }
-        return connection;
-    }
+			// Safety net to catch spinning
+			if (some_progress)
+				_total_no_progress = 0;
+			else
+			{
+				_total_no_progress++;
+				if (NO_PROGRESS_INFO>0 && _total_no_progress%NO_PROGRESS_INFO==0 && (NO_PROGRESS_CLOSE<=0 || _total_no_progress< NO_PROGRESS_CLOSE))
+					LOG.info("EndPoint making no progress: "+_total_no_progress+" "+_endp+" "+this);
+				if (NO_PROGRESS_CLOSE>0 && _total_no_progress==NO_PROGRESS_CLOSE)
+				{
+					LOG.warn("Closing EndPoint making no progress: "+_total_no_progress+" "+_endp+" "+this);
+					if (_endp instanceof SelectChannelEndPoint)
+						((SelectChannelEndPoint)_endp).getChannel().close();
+				}
+			}
+		}
+		return connection;
+	}
 
-    public void onInputShutdown() throws IOException
-    {
-        // If we don't have a committed response and we are not suspended
-        if (_generator.isIdle())
-        {
-            // then no more can happen, so close.
-            _endp.close();
-        }
+	public void onInputShutdown() throws IOException
+	{
+		// If we don't have a committed response and we are not suspended
+		if (_generator.isIdle())
+		{
+			// then no more can happen, so close.
+			_endp.close();
+		}
 
-        // Make idle parser seek EOF
-        if (_parser.isIdle())
-            _parser.setPersistent(false);
-    }
+		// Make idle parser seek EOF
+		if (_parser.isIdle())
+			_parser.setPersistent(false);
+	}
 
-    @Override
-    public void reset()
-    {
-        _readInterested = true;
-        LOG.debug("Enabled read interest {}", _endp);
-        super.reset();
-    }
+	@Override
+	public void reset()
+	{
+		_readInterested = true;
+		LOG.debug("Enabled read interest {}", _endp);
+		super.reset();
+	}
 
-    @Override
-    public boolean isSuspended()
-    {
-        return !_readInterested || super.isSuspended();
-    }
+	@Override
+	public boolean isSuspended()
+	{
+		return !_readInterested || super.isSuspended();
+	}
 }