M - 要编码的消息类型
public class DatagramPacketEncoder<M> extends MessageToMessageEncoder<AddressedEnvelope<M,java.net.InetSocketAddress>>
AddressedEnvelope至DatagramPacket的编码器。
例如,
ChannelPipeline pipeline = ...; pipeline.addLast("udpEncoder", new DatagramPacketEncoder(new ProtobufEncoder(...));
注意:由于UDP数据包乱序,因此应确保编码的消息大小不超过特定网络路径中的最大安全数据包大小,以确保不会发生数据包碎片。
ChannelHandler.Sharable| Constructor and Description |
|---|
DatagramPacketEncoder(MessageToMessageEncoder<? super M> encoder)
创建一个编码器,使用指定的消息编码器将内容编码为 AddressedEnvelope至DatagramPacket 。
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
acceptOutboundMessage(java.lang.Object msg)
如果应该处理给定的消息,则返回
true 。
|
void |
bind(ChannelHandlerContext ctx, java.net.SocketAddress localAddress, ChannelPromise promise)
|
void |
close(ChannelHandlerContext ctx, ChannelPromise promise)
|
void |
connect(ChannelHandlerContext ctx, java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise)
|
void |
deregister(ChannelHandlerContext ctx, ChannelPromise promise)
|
void |
disconnect(ChannelHandlerContext ctx, ChannelPromise promise)
|
protected void |
encode(ChannelHandlerContext ctx, AddressedEnvelope<M,java.net.InetSocketAddress> msg, java.util.List<java.lang.Object> out)
从一条消息编码到另一条消息。
|
void |
exceptionCaught(ChannelHandlerContext ctx, java.lang.Throwable cause)
|
void |
flush(ChannelHandlerContext ctx)
|
void |
handlerAdded(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
void |
handlerRemoved(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
boolean |
isSharable()
如果实现是 Sharable ,则返回true ,因此可以将其添加到不同的ChannelPipeline 。
|
void |
read(ChannelHandlerContext ctx)
|
writeensureNotSharablepublic DatagramPacketEncoder(MessageToMessageEncoder<? super M> encoder)
AddressedEnvelope至DatagramPacket 。
encoder - 指定的消息编码器
public boolean acceptOutboundMessage(java.lang.Object msg)
throws java.lang.Exception
MessageToMessageEncoder
true 。
如果false将被传递给ChannelPipeline中的下一个ChannelOutboundHandler 。
acceptOutboundMessage在课程
MessageToMessageEncoder<AddressedEnvelope<M,java.net.InetSocketAddress>>
java.lang.Exception
protected void encode(ChannelHandlerContext ctx, AddressedEnvelope<M,java.net.InetSocketAddress> msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
MessageToMessageEncoder
encode在课堂上
MessageToMessageEncoder<AddressedEnvelope<M,java.net.InetSocketAddress>>
ctx - 此MessageToMessageEncoder所属的ChannelHandlerContext
msg - 要编码到另一个的消息
out - 应该添加编码味精的
List需要做某种聚合
java.lang.Exception - 如果发生错误则抛出
public void bind(ChannelHandlerContext ctx, java.net.SocketAddress localAddress, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.bind(SocketAddress, ChannelPromise)转发到8251902014914的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
bind在界面
ChannelOutboundHandler
bind在课堂上
ChannelOutboundHandlerAdapter
ctx - 为其进行绑定操作的ChannelHandlerContext
localAddress - 它应该绑定的
SocketAddress
promise - 在操作完成后通知ChannelPromise
java.lang.Exception - 发生错误时抛出
public void connect(ChannelHandlerContext ctx, java.net.SocketAddress remoteAddress, java.net.SocketAddress localAddress, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.connect(SocketAddress, SocketAddress, ChannelPromise)转发至ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
connect在界面
ChannelOutboundHandler
connect在课程
ChannelOutboundHandlerAdapter
ctx - 进行连接操作的ChannelHandlerContext
remoteAddress - 它应该连接到的
SocketAddress
localAddress - 用作连接源的
SocketAddress
promise - 在操作完成后通知ChannelPromise
java.lang.Exception - 发生错误时抛出
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.disconnect(ChannelPromise)转发给ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
disconnect在界面
ChannelOutboundHandler
disconnect在课堂
ChannelOutboundHandlerAdapter
ctx - 为其进行断开操作的ChannelHandlerContext
promise - 在操作完成后通知ChannelPromise
java.lang.Exception - 发生错误时抛出
public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.close(ChannelPromise)转发到ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
close在界面
ChannelOutboundHandler
close在课堂
ChannelOutboundHandlerAdapter
ctx - 关闭操作的ChannelHandlerContext
promise - 在操作完成后通知ChannelPromise
java.lang.Exception - 发生错误时抛出
public void deregister(ChannelHandlerContext ctx, ChannelPromise promise) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.deregister(ChannelPromise)转发至ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
deregister在界面
ChannelOutboundHandler
deregister在课堂
ChannelOutboundHandlerAdapter
ctx - 关闭操作的ChannelHandlerContext
promise - 在操作完成后通知ChannelPromise
java.lang.Exception - 发生错误时抛出
public void read(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelHandlerContext.read()转发至ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
read在界面
ChannelOutboundHandler
read在课堂
ChannelOutboundHandlerAdapter
java.lang.Exception
public void flush(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelOutboundHandlerAdapter
ChannelHandlerContext.flush()转发到ChannelPipeline中的下一个ChannelOutboundHandler 。
子类可以重写此方法来更改行为。
flush在界面
ChannelOutboundHandler
flush在课堂
ChannelOutboundHandlerAdapter
ctx - 进行冲洗操作的ChannelHandlerContext
java.lang.Exception - 发生错误时抛出
public void handlerAdded(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerAdded ,界面
ChannelHandler
handlerAdded在课堂上
ChannelHandlerAdapter
java.lang.Exception
public void handlerRemoved(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerRemoved在界面
ChannelHandler
handlerRemoved在课堂上
ChannelHandlerAdapter
java.lang.Exception
public void exceptionCaught(ChannelHandlerContext ctx, java.lang.Throwable cause) throws java.lang.Exception
ChannelHandlerAdapter
ChannelHandlerContext.fireExceptionCaught(Throwable)转发至ChannelPipeline中的下一个ChannelHandler 。
子类可以重写此方法来更改行为。
exceptionCaught ,界面
ChannelHandler
exceptionCaught ,课时
ChannelHandlerAdapter
java.lang.Exception
public boolean isSharable()
ChannelHandlerAdapter
Sharable ,则返回true ,因此可以将其添加到不同的ChannelPipeline 。
isSharable in class
ChannelHandlerAdapter
Copyright © 2008–2018 The Netty Project. All rights reserved.