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)
|
write
ensureNotSharable
public 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.