Skip to content

Commit 8a67d46

Browse files
committed
- Return SPDY support to RUN status.
+ Still need to deal with connection pooling and SPDY connections.
1 parent 61451e0 commit 8a67d46

File tree

7 files changed

+44
-20
lines changed

7 files changed

+44
-20
lines changed

providers/grizzly/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</description>
1515

1616
<properties>
17-
<grizzly.version>2.3.4</grizzly.version>
17+
<grizzly.version>2.3.6-SNAPSHOT</grizzly.version>
1818
<grizzly.npn.version>1.0</grizzly.npn.version>
1919
</properties>
2020

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/EventHandler.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import org.glassfish.grizzly.websockets.SimpleWebSocket;
4646
import org.glassfish.grizzly.websockets.WebSocketHolder;
4747

48-
import java.io.IOException;
4948
import java.net.URI;
5049
import java.util.HashMap;
5150
import java.util.List;
@@ -358,8 +357,6 @@ public void onHttpHeadersParsed(HttpHeader httpHeader,
358357
@SuppressWarnings("unchecked")
359358
public boolean onHttpPacketParsed(HttpHeader httpHeader, FilterChainContext ctx) {
360359

361-
boolean result;
362-
363360
Utils.removeRequestInFlight(ctx.getConnection());
364361

365362
if (cleanup != null) {
@@ -373,7 +370,6 @@ public boolean onHttpPacketParsed(HttpHeader httpHeader, FilterChainContext ctx)
373370
return false;
374371
}
375372

376-
result = false;
377373
final HttpResponsePacket response =
378374
(HttpResponsePacket) httpHeader;
379375
final HttpTransactionContext context = HttpTransactionContext.get(ctx.getConnection());
@@ -387,7 +383,6 @@ public boolean onHttpPacketParsed(HttpHeader httpHeader, FilterChainContext ctx)
387383
context.getRequest(),
388384
context.getHandler(),
389385
context.getFuture());
390-
return result;
391386
} else {
392387
cleanup(ctx);
393388
final AsyncHandler handler = context.getHandler();
@@ -400,22 +395,25 @@ public boolean onHttpPacketParsed(HttpHeader httpHeader, FilterChainContext ctx)
400395
} else {
401396
context.done();
402397
}
403-
return result;
404398
}
399+
return false;
405400
} finally {
406-
recycleRequestResponsePackets(response);
401+
recycleRequestResponsePackets(ctx.getConnection(), response);
407402
}
408403

409404
}
410405

411406

412407
// ----------------------------------------------------- Private Methods
413408

414-
private static void recycleRequestResponsePackets(final HttpResponsePacket response) {
415-
HttpRequestPacket request = response.getRequest();
416-
request.setExpectContent(false);
417-
response.recycle();
418-
request.recycle();
409+
private static void recycleRequestResponsePackets(final Connection c,
410+
final HttpResponsePacket response) {
411+
if (!Utils.isSpdyConnection(c)) {
412+
HttpRequestPacket request = response.getRequest();
413+
request.setExpectContent(false);
414+
response.recycle();
415+
request.recycle();
416+
}
419417
}
420418

421419
private static void processKeepAlive(final Connection c,

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/GrizzlyAsyncHttpProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ public String selectProtocol(SSLEngine engine, LinkedHashSet<String> strings) {
601601
new SpdySession(connection, false, spdyHandlerFilter);
602602
spdySession.setLocalInitialWindowSize(spdyHandlerFilter.getInitialWindowSize());
603603
spdySession.setLocalMaxConcurrentStreams(spdyHandlerFilter.getMaxConcurrentStreams());
604-
604+
Utils.setSpdyConnection(connection);
605605
SpdySession.bind(connection, spdySession);
606606
return SPDY;
607607
} else if (strings.contains(HTTP)) {

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/Utils.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public final class Utils {
2727
Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(Utils.class.getName() + "-IGNORE");
2828
private static final Attribute<AtomicInteger> REQUEST_IN_FLIGHT =
2929
Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(Utils.class.getName() + "-IN-FLIGHT");
30+
private static final Attribute<Boolean> SPDY =
31+
Grizzly.DEFAULT_ATTRIBUTE_BUILDER.createAttribute(Utils.class.getName() + "-SPDY-CONNECTION");
3032

3133

3234
// ------------------------------------------------------------ Constructors
@@ -38,10 +40,6 @@ private Utils() {}
3840
// ---------------------------------------------------------- Public Methods
3941

4042

41-
public static boolean isSecure(final String uri) {
42-
return (uri.startsWith("https:") || uri.startsWith("wss:"));
43-
}
44-
4543
public static boolean isSecure(final URI uri) {
4644
final String scheme = uri.getScheme();
4745
return ("https".equals(scheme) || "wss".equals(scheme));
@@ -81,4 +79,12 @@ public static int getRequestInFlightCount(final AttributeStorage storage) {
8179
AtomicInteger counter = REQUEST_IN_FLIGHT.get(storage);
8280
return ((counter != null) ? counter.get() : 0);
8381
}
82+
83+
public static void setSpdyConnection(final Connection c) {
84+
SPDY.set(c, Boolean.TRUE);
85+
}
86+
87+
public static boolean isSpdyConnection(final Connection c) {
88+
return SPDY.get(c);
89+
}
8490
}

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/filters/AsyncHttpClientFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ private boolean sendAsGrizzlyRequest(final Request request,
228228
if (httpCtx.isWSRequest() && !httpCtx.isEstablishingTunnel()) {
229229
try {
230230
final URI wsURI = new URI(httpCtx.getWsRequestURI());
231-
httpCtx.setProtocolHandler(Version.DRAFT17.createHandler(true));
231+
httpCtx.setProtocolHandler(Version.RFC6455.createHandler(true));
232232
httpCtx.setHandshake(
233233
httpCtx.getProtocolHandler().createHandShake(wsURI));
234234
requestPacket = (HttpRequestPacket)

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/websocket/AHCWebSocketListenerAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
import org.asynchttpclient.websocket.WebSocketPingListener;
2020
import org.asynchttpclient.websocket.WebSocketPongListener;
2121
import org.asynchttpclient.websocket.WebSocketTextListener;
22+
import org.glassfish.grizzly.websockets.ClosingFrame;
2223
import org.glassfish.grizzly.websockets.DataFrame;
23-
import org.glassfish.grizzly.websockets.draft06.ClosingFrame;
2424

2525
import java.io.ByteArrayOutputStream;
2626

providers/grizzly/src/test/java/org/asynchttpclient/providers/grizzly/GrizzlySimpleAsyncHttpClientTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,18 @@
1313

1414
package org.asynchttpclient.providers.grizzly;
1515

16+
import org.asynchttpclient.AsyncCompletionHandler;
17+
import org.asynchttpclient.AsyncHandler;
1618
import org.asynchttpclient.AsyncHttpClient;
1719
import org.asynchttpclient.AsyncHttpClientConfig;
20+
import org.asynchttpclient.Request;
21+
import org.asynchttpclient.RequestBuilder;
22+
import org.asynchttpclient.Response;
1823
import org.asynchttpclient.async.SimpleAsyncHttpClientTest;
1924

25+
import java.io.IOException;
26+
import java.util.concurrent.Future;
27+
2028
public class GrizzlySimpleAsyncHttpClientTest extends SimpleAsyncHttpClientTest {
2129

2230
@Override
@@ -27,4 +35,16 @@ public AsyncHttpClient getAsyncHttpClient(AsyncHttpClientConfig config) {
2735
public String getProviderClass() {
2836
return GrizzlyAsyncHttpProvider.class.getName();
2937
}
38+
39+
public static void main(String[] args) {
40+
AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder().setSpdyEnabled(true).build();
41+
AsyncHttpClient client = new AsyncHttpClient(new GrizzlyAsyncHttpProvider(config), config);
42+
Request request = new RequestBuilder("GET").setUrl("https://www.google.com").build();
43+
try {
44+
Future<Response> future = client.executeRequest(request);
45+
System.out.println(future.get().toString());
46+
} catch (Exception e) {
47+
e.printStackTrace();
48+
}
49+
}
3050
}

0 commit comments

Comments
 (0)