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, userEventTriggered
ensureNotSharable, handlerAdded, handlerRemoved, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
handlerAdded, handlerRemoved
protected 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.