diff options
author | Greg Wilkins | 2011-10-28 00:38:41 +0000 |
---|---|---|
committer | Greg Wilkins | 2011-10-28 00:38:41 +0000 |
commit | 5aac176fbd3a4681ffbab6715a7864a17a82fcc8 (patch) | |
tree | fe91769356302a26084adcf2db65a75a3bb68639 /jetty-client/src/main/java/org/eclipse/jetty | |
parent | 738cbfdccc1b4c07eea7dd954130af7da7c90401 (diff) | |
download | org.eclipse.jetty.project-5aac176fbd3a4681ffbab6715a7864a17a82fcc8.tar.gz org.eclipse.jetty.project-5aac176fbd3a4681ffbab6715a7864a17a82fcc8.tar.xz org.eclipse.jetty.project-5aac176fbd3a4681ffbab6715a7864a17a82fcc8.zip |
some Async client tests passing
Diffstat (limited to 'jetty-client/src/main/java/org/eclipse/jetty')
-rw-r--r-- | jetty-client/src/main/java/org/eclipse/jetty/client/AsyncHttpConnection.java | 40 | ||||
-rw-r--r-- | jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java | 4 |
2 files changed, 36 insertions, 8 deletions
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncHttpConnection.java b/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncHttpConnection.java index 0d400369bd..b2693e8d22 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncHttpConnection.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncHttpConnection.java @@ -3,6 +3,7 @@ package org.eclipse.jetty.client; import java.io.IOException; import org.eclipse.jetty.http.AbstractGenerator; +import org.eclipse.jetty.http.HttpParser; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.io.AsyncEndPoint; import org.eclipse.jetty.io.Buffer; @@ -47,27 +48,36 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async int loops=10000; // TODO remove this safety net - // While the endpoint is open - // AND we have more characters to read OR we made some progress - while (_endp.isOpen() && - (_parser.isMoreInBuffer() || _endp.isBufferingInput() || progress)) + // While we are making progress and have not changed connection + while (progress && connection==this) { + LOG.debug("open={} more={} buffering={} progress={}",_endp.isOpen(),_parser.isMoreInBuffer(),_endp.isBufferingInput(),progress); + if (loops--<0) { System.err.println("LOOPING!!!"); System.err.println(this); System.err.println(_endp); - System.err.println(((SelectChannelEndPoint)_endp).getSelectManager().dump()); - System.exit(1); + _endp.close(); + } + else if (loops==10) + { + LOG.setDebugEnabled(true); + Log.getLogger(HttpParser.class).setDebugEnabled(true); + Log.getLogger("org.eclipse.jetty.io.nio.ssl").setDebugEnabled(true); } progress=false; HttpExchange exchange=_exchange; + + LOG.debug("exchange {}",exchange); + try { // Should we commit the request? if (!_generator.isCommitted() && exchange!=null && exchange.getStatus() == HttpExchange.STATUS_WAITING_FOR_COMMIT) { + LOG.debug("commit"); progress=true; commitRequest(); } @@ -76,7 +86,10 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async if (_generator.isCommitted() && !_generator.isComplete()) { if (_generator.flushBuffer()>0) + { + LOG.debug("flushed"); progress=true; + } // Is there more content to send or should we complete the generator if (_generator.isState(AbstractGenerator.STATE_CONTENT)) @@ -87,11 +100,13 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async if (_requestContentChunk==null) { + LOG.debug("complete"); progress=true; _generator.complete(); } else if (_generator.isEmpty()) { + LOG.debug("addChunk"); progress=true; Buffer chunk=_requestContentChunk; _requestContentChunk=exchange.getRequestContentChunk(null); @@ -103,6 +118,7 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async // Signal request completion if (_generator.isComplete() && !_requestComplete) { + LOG.debug("requestComplete"); progress=true; _requestComplete = true; exchange.getEventListener().onRequestComplete(); @@ -114,12 +130,17 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async // Read any input that is available if (!_parser.isComplete() && _parser.parseAvailable()) + { + LOG.debug("parsed"); progress=true; - + } + // Has any IO been done by the endpoint itself since last loop if (_asyncEndp.hasProgressed()) + { + LOG.debug("hasProgressed"); progress=true; - + } } catch (Throwable e) { @@ -158,6 +179,9 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async } finally { + LOG.debug("{} {} progress={}",_generator, _parser,progress); + LOG.debug("{}",_endp); + boolean complete = failed || _generator.isComplete() && _parser.isComplete(); if (complete) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java b/jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java index c9aff5a10f..3a5eb61d29 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java @@ -454,5 +454,9 @@ class SelectConnector extends AbstractLifeCycle implements HttpClient.Connector _endp.setMaxIdleTime(timeMs); } + public String toString() + { + return "Upgradable:"+_endp.toString(); + } } } |