Skip to content

Commit b3a859c

Browse files
author
Kyrylo Stokoz
committed
Add handshake complete callback back
1 parent 0cf8266 commit b3a859c

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

src/main/java/com/ning/http/client/AsyncHandlerExtensions.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,9 @@ public interface AsyncHandlerExtensions {
6464
* Notify the callback after DNS resolution has completed.
6565
*/
6666
void onDnsResolved();
67+
68+
/**
69+
* Notify the callback when the SSL handshake performed to establish an HTTPS connection has been completed.
70+
*/
71+
void onSslHandshakeCompleted();
6772
}

src/main/java/com/ning/http/client/providers/netty/request/NettyConnectListener.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import static com.ning.http.util.AsyncHttpProviderUtils.getBaseUrl;
1717

18+
import com.ning.http.client.AsyncHandler;
1819
import org.jboss.netty.channel.Channel;
1920
import org.jboss.netty.channel.ChannelFuture;
2021
import org.jboss.netty.channel.ChannelFutureListener;
@@ -82,21 +83,26 @@ private void writeRequest(Channel channel) {
8283
}
8384

8485
private void onFutureSuccess(final Channel channel) throws ConnectException {
85-
86+
8687
SslHandler sslHandler = channel.getPipeline().get(SslHandler.class);
8788

8889
if (sslHandler != null) {
8990
sslHandler.handshake().addListener(new ChannelFutureListener() {
90-
91+
9192
@Override
92-
public void operationComplete(ChannelFuture future) throws Exception {
93-
if (future.isSuccess())
93+
public void operationComplete(ChannelFuture handshakeFuture) throws Exception {
94+
if (handshakeFuture.isSuccess()){
95+
final AsyncHandler<T> asyncHandler = future.getAsyncHandler();
96+
if (asyncHandler instanceof AsyncHandlerExtensions)
97+
AsyncHandlerExtensions.class.cast(asyncHandler).onSslHandshakeCompleted();
98+
9499
writeRequest(channel);
100+
}
95101
else
96-
onFutureFailure(channel, future.getCause());
102+
onFutureFailure(channel, handshakeFuture.getCause());
97103
}
98104
});
99-
105+
100106
} else {
101107
writeRequest(channel);
102108
}

src/test/java/com/ning/http/client/async/EventCollectingHandler.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,9 @@ public void onRetry() {
104104
public void onDnsResolved() {
105105
firedEvents.add("DnsResolved");
106106
}
107+
108+
@Override
109+
public void onSslHandshakeCompleted() {
110+
firedEvents.add("SslHandshakeCompleted");
111+
}
107112
}

src/test/java/com/ning/http/client/async/netty/NettyBasicHttpsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public void testNormalEventsFired() throws InterruptedException, TimeoutExceptio
4343
"PoolConnection",
4444
"OpenConnection",
4545
"DnsResolved",
46+
"SslHandshakeCompleted",
4647
"ConnectionOpen",
4748
"SendRequest",
4849
"HeaderWriteCompleted",

0 commit comments

Comments
 (0)