Allow writing with void promise if IdleStateHandler is configured in pipeline.
Motivation: Allow writing with void promise if IdleStateHandler is configured in the pipeline for read timeout events. Modifications: Better performance. Result: No more ChannelFutureListeners are created if IdleStateHandler is only configured for read timeouts allowing for writing to the channel with void promise.
This commit is contained in:
parent
6703318010
commit
0decf2f647
@ -256,13 +256,16 @@ public class IdleStateHandler extends ChannelDuplexHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
|
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
|
||||||
promise.addListener(new ChannelFutureListener() {
|
// Allow writing with void promise if handler is only configured for read timeout events.
|
||||||
@Override
|
if (writerIdleTimeNanos > 0 || allIdleTimeNanos > 0) {
|
||||||
public void operationComplete(ChannelFuture future) throws Exception {
|
promise.addListener(new ChannelFutureListener() {
|
||||||
lastWriteTime = System.nanoTime();
|
@Override
|
||||||
firstWriterIdleEvent = firstAllIdleEvent = true;
|
public void operationComplete(ChannelFuture future) throws Exception {
|
||||||
}
|
lastWriteTime = System.nanoTime();
|
||||||
});
|
firstWriterIdleEvent = firstAllIdleEvent = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
ctx.write(msg, promise);
|
ctx.write(msg, promise);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user