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, readensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitexceptionCaught, handlerAdded, handlerRemovedprotected 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.