public abstract class MessageToMessageEncoder<I> extends ChannelOutboundHandlerAdapter
ChannelOutboundHandlerAdapter
从一个消息编码到另一个消息例如,这里是一个将Integer
解码为Integer
的String
。
public class IntegerToStringEncoder extends
MessageToMessageEncoder
<Integer
> {
@Override
public void encode(ChannelHandlerContext
ctx, Integer
message, List<Object> out)
throws 异常
{
out.add(message.toString());
}
}
请注意,如果消息是ReferenceCounted
类型的消息,则需要致电ReferenceCounted.retain()
。
这是需要的,因为MessageToMessageEncoder
将在编码消息上调用ReferenceCounted.release()
。
ChannelHandler.Sharable
Modifier | Constructor and Description |
---|---|
protected |
MessageToMessageEncoder()
创建一个新实例,它将尝试检测类型以匹配该类的类型参数。
|
protected |
MessageToMessageEncoder(java.lang.Class<? extends I> outboundMessageType)
创建一个新的实例
|
Modifier and Type | Method and Description |
---|---|
boolean |
acceptOutboundMessage(java.lang.Object msg)
如果应该处理给定的消息,则返回
true 。
|
protected abstract void |
encode(ChannelHandlerContext ctx, I msg, java.util.List<java.lang.Object> out)
从一条消息编码到另一条消息。
|
void |
write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise)
|
bind, close, connect, deregister, disconnect, flush, read
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
exceptionCaught, handlerAdded, handlerRemoved
protected MessageToMessageEncoder()
protected MessageToMessageEncoder(java.lang.Class<? extends I> outboundMessageType)
outboundMessageType
- 要匹配和编码的消息类型
public boolean acceptOutboundMessage(java.lang.Object msg) throws java.lang.Exception
true
。
如果false
它将被传递到ChannelPipeline
中的下一个ChannelOutboundHandler
。
java.lang.Exception
public void write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.write(Object, ChannelPromise)
转发到下一个ChannelOutboundHandler
的ChannelPipeline
。
子类可以重写此方法来更改行为。
write
在界面
ChannelOutboundHandler
write
在课堂上
ChannelOutboundHandlerAdapter
ctx
- 进行写入操作的ChannelHandlerContext
msg
- 要写的消息
promise
- 在操作完成后通知ChannelPromise
java.lang.Exception
- 发生错误时抛出
protected abstract void encode(ChannelHandlerContext ctx, I msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
ctx
- 这MessageToMessageEncoder
所属的ChannelHandlerContext
msg
- 要编码到另一个的消息
out
- 应该添加编码味精的
List
需要做某种聚合
java.lang.Exception
- 如果发生错误则抛出
Copyright © 2008–2018 The Netty Project. All rights reserved.