Move methods from ChannelHandler to ChannelStateHandler like proposed in [#1107]
This commit is contained in:
parent
3ac78b030a
commit
1603d9792d
@ -209,16 +209,6 @@ public interface ChannelHandler {
|
|||||||
*/
|
*/
|
||||||
void afterRemove(ChannelHandlerContext ctx) throws Exception;
|
void afterRemove(ChannelHandlerContext ctx) throws Exception;
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets called if a {@link Throwable} was thrown.
|
|
||||||
*/
|
|
||||||
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets called if an user event was triggered.
|
|
||||||
*/
|
|
||||||
void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates that the same instance of the annotated {@link ChannelHandler}
|
* Indicates that the same instance of the annotated {@link ChannelHandler}
|
||||||
* can be added to one or more {@link ChannelPipeline}s multiple times
|
* can be added to one or more {@link ChannelPipeline}s multiple times
|
||||||
|
@ -60,28 +60,4 @@ public abstract class ChannelHandlerAdapter implements ChannelHandler {
|
|||||||
public void afterRemove(ChannelHandlerContext ctx) throws Exception {
|
public void afterRemove(ChannelHandlerContext ctx) throws Exception {
|
||||||
// NOOP
|
// NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Calls {@link ChannelHandlerContext#fireExceptionCaught(Throwable)} to forward
|
|
||||||
* to the next {@link ChannelHandler} in the {@link ChannelPipeline}.
|
|
||||||
*
|
|
||||||
* Sub-classes may override this method to change behavior.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
|
|
||||||
throws Exception {
|
|
||||||
ctx.fireExceptionCaught(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calls {@link ChannelHandlerContext#fireUserEventTriggered(Object)} to forward
|
|
||||||
* to the next {@link ChannelHandler} in the {@link ChannelPipeline}.
|
|
||||||
*
|
|
||||||
* Sub-classes may override this method to change behavior.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void userEventTriggered(ChannelHandlerContext ctx, Object evt)
|
|
||||||
throws Exception {
|
|
||||||
ctx.fireUserEventTriggered(evt);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -55,4 +55,14 @@ public interface ChannelStateHandler extends ChannelHandler {
|
|||||||
* to wait for more data and consume it later.
|
* to wait for more data and consume it later.
|
||||||
*/
|
*/
|
||||||
void inboundBufferUpdated(ChannelHandlerContext ctx) throws Exception;
|
void inboundBufferUpdated(ChannelHandlerContext ctx) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets called if a {@link Throwable} was thrown.
|
||||||
|
*/
|
||||||
|
void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets called if an user event was triggered.
|
||||||
|
*/
|
||||||
|
void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception;
|
||||||
}
|
}
|
||||||
|
@ -68,9 +68,38 @@ public abstract class ChannelStateHandlerAdapter extends ChannelHandlerAdapter i
|
|||||||
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
||||||
ctx.fireChannelInactive();
|
ctx.fireChannelInactive();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Calls {@link ChannelHandlerContext#fireChannelReadSuspended()} to forward
|
||||||
|
* to the next {@link ChannelHandler} in the {@link ChannelPipeline}.
|
||||||
|
*
|
||||||
|
* Sub-classes may override this method to change behavior.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void channelReadSuspended(ChannelHandlerContext ctx) throws Exception {
|
public void channelReadSuspended(ChannelHandlerContext ctx) throws Exception {
|
||||||
ctx.fireChannelReadSuspended();
|
ctx.fireChannelReadSuspended();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls {@link ChannelHandlerContext#fireExceptionCaught(Throwable)} to forward
|
||||||
|
* to the next {@link ChannelHandler} in the {@link ChannelPipeline}.
|
||||||
|
*
|
||||||
|
* Sub-classes may override this method to change behavior.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)
|
||||||
|
throws Exception {
|
||||||
|
ctx.fireExceptionCaught(cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls {@link ChannelHandlerContext#fireUserEventTriggered(Object)} to forward
|
||||||
|
* to the next {@link ChannelHandler} in the {@link ChannelPipeline}.
|
||||||
|
*
|
||||||
|
* Sub-classes may override this method to change behavior.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void userEventTriggered(ChannelHandlerContext ctx, Object evt)
|
||||||
|
throws Exception {
|
||||||
|
ctx.fireUserEventTriggered(evt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -812,7 +812,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
|
|||||||
throw new NullPointerException("cause");
|
throw new NullPointerException("cause");
|
||||||
}
|
}
|
||||||
|
|
||||||
final DefaultChannelHandlerContext next = this.next;
|
final DefaultChannelHandlerContext next = findContextInbound();
|
||||||
EventExecutor executor = next.executor();
|
EventExecutor executor = next.executor();
|
||||||
if (prev != null && executor.inEventLoop()) {
|
if (prev != null && executor.inEventLoop()) {
|
||||||
next.invokeExceptionCaught(cause);
|
next.invokeExceptionCaught(cause);
|
||||||
@ -835,8 +835,9 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void invokeExceptionCaught(Throwable cause) {
|
private void invokeExceptionCaught(Throwable cause) {
|
||||||
|
ChannelStateHandler handler = (ChannelStateHandler) handler();
|
||||||
try {
|
try {
|
||||||
handler().exceptionCaught(this, cause);
|
handler.exceptionCaught(this, cause);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
if (logger.isWarnEnabled()) {
|
if (logger.isWarnEnabled()) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
@ -854,7 +855,7 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
|
|||||||
throw new NullPointerException("event");
|
throw new NullPointerException("event");
|
||||||
}
|
}
|
||||||
|
|
||||||
final DefaultChannelHandlerContext next = this.next;
|
final DefaultChannelHandlerContext next = findContextInbound();
|
||||||
EventExecutor executor = next.executor();
|
EventExecutor executor = next.executor();
|
||||||
if (executor.inEventLoop()) {
|
if (executor.inEventLoop()) {
|
||||||
next.invokeUserEventTriggered(event);
|
next.invokeUserEventTriggered(event);
|
||||||
@ -870,8 +871,10 @@ final class DefaultChannelHandlerContext extends DefaultAttributeMap implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void invokeUserEventTriggered(Object event) {
|
private void invokeUserEventTriggered(Object event) {
|
||||||
|
ChannelStateHandler handler = (ChannelStateHandler) handler();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
handler().userEventTriggered(this, event);
|
handler.userEventTriggered(this, event);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
pipeline.notifyHandlerException(t);
|
pipeline.notifyHandlerException(t);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -1266,16 +1266,6 @@ final class DefaultChannelPipeline implements ChannelPipeline {
|
|||||||
unsafe.beginRead();
|
unsafe.beginRead();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
|
||||||
ctx.fireExceptionCaught(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
|
|
||||||
ctx.fireUserEventTriggered(evt);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void sendFile(
|
public final void sendFile(
|
||||||
ChannelHandlerContext ctx, FileRegion region, ChannelPromise promise) throws Exception {
|
ChannelHandlerContext ctx, FileRegion region, ChannelPromise promise) throws Exception {
|
||||||
|
Loading…
Reference in New Issue
Block a user