Skip to content

Commit 16550ec

Browse files
author
Stephane Landelle
committed
Add new onRetry callback method for AsyncHttpClient#435
1 parent 1fa45b4 commit 16550ec

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*
2020
* More additional hooks might come, such as:
2121
* <ul>
22-
* <li>onRetry()</li>
2322
* <li>onConnected()</li>
2423
* <li>onConnectionClosed()</li>
2524
* <li>onBytesSent(long numberOfBytes)</li>
@@ -35,4 +34,9 @@ public interface AsyncHandlerExtensions {
3534
* Currently only supported by the Netty provider.
3635
*/
3736
void onRequestSent();
37+
38+
/**
39+
* Notify the callback every time a request is being retried.
40+
*/
41+
void onRetry();
3842
}

src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,6 +1297,9 @@ private FilterContext handleIoException(FilterContext fc, NettyResponseFuture<?>
12971297
}
12981298

12991299
private void replayRequest(final NettyResponseFuture<?> future, FilterContext fc, HttpResponse response, ChannelHandlerContext ctx) throws IOException {
1300+
if (future.getAsyncHandler() instanceof AsyncHandlerExtensions) {
1301+
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onRetry();
1302+
}
13001303
final Request newRequest = fc.getRequest();
13011304
future.setAsyncHandler(fc.getAsyncHandler());
13021305
future.setState(NettyResponseFuture.STATE.NEW);
@@ -1430,6 +1433,9 @@ protected boolean remotelyClosed(Channel channel, NettyResponseFuture<?> future)
14301433
future.setState(NettyResponseFuture.STATE.RECONNECTED);
14311434

14321435
log.debug("Trying to recover request {}\n", future.getNettyRequest());
1436+
if (future.getAsyncHandler() instanceof AsyncHandlerExtensions) {
1437+
AsyncHandlerExtensions.class.cast(future.getAsyncHandler()).onRetry();
1438+
}
14331439

14341440
try {
14351441
nextRequest(future.getRequest(), future);

0 commit comments

Comments
 (0)