Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2011-10-28 00:38:41 +0000
committerGreg Wilkins2011-10-28 00:38:41 +0000
commit5aac176fbd3a4681ffbab6715a7864a17a82fcc8 (patch)
treefe91769356302a26084adcf2db65a75a3bb68639 /jetty-client/src/main/java/org/eclipse/jetty
parent738cbfdccc1b4c07eea7dd954130af7da7c90401 (diff)
downloadorg.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.java40
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java4
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();
+ }
}
}

Back to the top