public abstract class SimpleChannelInboundHandler<I> extends ChannelInboundHandlerAdapter
ChannelInboundHandlerAdapter它允许显式只处理特定类型的消息。
例如,这里是一个只处理String消息的实现。
public class StringHandler extends
SimpleChannelInboundHandler<String> {
@Override
protected void channelRead0(ChannelHandlerContext ctx, String message)
throws 异常 {
System.out.println(message);
}
}
请注意,根据构造函数参数,它将通过将所有处理的消息传递给ReferenceCountUtil.release(Object)来释放它 。
在这种情况下,如果将对象传递给ChannelPipeline中的下一个处理程序,则可能需要使用ReferenceCountUtil.retain(Object) 。
请记住, #channelRead0(ChannelHandlerContext, I)将在5.0中重命名为messageReceived(ChannelHandlerContext, I) 。
ChannelHandler.Sharable| Modifier | Constructor and Description |
|---|---|
protected |
SimpleChannelInboundHandler()
参见
SimpleChannelInboundHandler(boolean)和
true作为布尔参数。
|
protected |
SimpleChannelInboundHandler(boolean autoRelease)
创建一个新实例,它将尝试检测类型以匹配该类的类型参数。
|
protected |
SimpleChannelInboundHandler(java.lang.Class<? extends I> inboundMessageType)
参见
SimpleChannelInboundHandler(Class, boolean)和
true作为布尔值。
|
protected |
SimpleChannelInboundHandler(java.lang.Class<? extends I> inboundMessageType, boolean autoRelease)
创建一个新的实例
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
acceptInboundMessage(java.lang.Object msg)
如果应该处理给定的消息,则返回
true 。
|
void |
channelRead(ChannelHandlerContext ctx, java.lang.Object msg)
|
protected abstract void |
channelRead0(ChannelHandlerContext ctx, I msg)
请记住,此方法将在5.0中重命名为 messageReceived(ChannelHandlerContext, I) 。
|
channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredensureNotSharable, handlerAdded, handlerRemoved, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waithandlerAdded, handlerRemovedprotected SimpleChannelInboundHandler()
SimpleChannelInboundHandler(boolean)和
true作为布尔参数。
protected SimpleChannelInboundHandler(boolean autoRelease)
autoRelease -
true如果处理的消息应通过传递给
ReferenceCountUtil.release(Object)自动释放。
protected SimpleChannelInboundHandler(java.lang.Class<? extends I> inboundMessageType)
SimpleChannelInboundHandler(Class, boolean)和
true作为布尔值。
protected SimpleChannelInboundHandler(java.lang.Class<? extends I> inboundMessageType, boolean autoRelease)
inboundMessageType - 要匹配的消息类型
autoRelease -
true如果处理的消息应通过传递给
ReferenceCountUtil.release(Object)自动释放。
public boolean acceptInboundMessage(java.lang.Object msg)
throws java.lang.Exception
true 。
如果false将传递到ChannelPipeline中的下一个ChannelInboundHandler 。
java.lang.Exception
public void channelRead(ChannelHandlerContext ctx, java.lang.Object msg) throws java.lang.Exception
ChannelInboundHandlerAdapter
ChannelHandlerContext.fireChannelRead(Object)转发到ChannelPipeline中的下一个ChannelInboundHandler 。
子类可以重写此方法来更改行为。
channelRead在界面
ChannelInboundHandler
channelRead的
ChannelInboundHandlerAdapter
java.lang.Exception
protected abstract void channelRead0(ChannelHandlerContext ctx, I msg) throws java.lang.Exception
messageReceived(ChannelHandlerContext, I) 。
被称为I类型的每条消息。
ctx - 这SimpleChannelInboundHandler所属的ChannelHandlerContext
msg - 要处理的消息
java.lang.Exception - 发生错误时抛出
Copyright © 2008–2018 The Netty Project. All rights reserved.