Package io.netty.handler.codec
Class MessageToByteEncoder<I>
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelOutboundHandlerAdapter
-
- io.netty.handler.codec.MessageToByteEncoder<I>
-
- All Implemented Interfaces:
ChannelHandler
,ChannelOutboundHandler
- Direct Known Subclasses:
BrotliEncoder
,Bzip2Encoder
,CompatibleMarshallingEncoder
,CompatibleObjectEncoder
,FastLzFrameEncoder
,HAProxyMessageEncoder
,Lz4FrameEncoder
,LzfEncoder
,LzmaFrameEncoder
,MarshallingEncoder
,ObjectEncoder
,ProtobufVarint32LengthFieldPrepender
,SnappyFrameEncoder
,Socks4ClientEncoder
,Socks4ServerEncoder
,Socks5ClientEncoder
,Socks5ServerEncoder
,SocksMessageEncoder
,TcpDnsQueryEncoder
,ZlibEncoder
,ZstdEncoder
public abstract class MessageToByteEncoder<I> extends ChannelOutboundHandlerAdapter
ChannelOutboundHandlerAdapter
which encodes message in a stream-like fashion from one message to anByteBuf
. Example implementation which encodesInteger
s to aByteBuf
.public class IntegerEncoder extends
MessageToByteEncoder
<Integer
> {@Override
public void encode(ChannelHandlerContext
ctx,Integer
msg,ByteBuf
out) throwsException
{ out.writeInt(msg); } }
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MessageToByteEncoder()
seeMessageToByteEncoder(boolean)
withtrue
as boolean parameter.protected
MessageToByteEncoder(boolean preferDirect)
Create a new instance which will try to detect the types to match out of the type parameter of the class.protected
MessageToByteEncoder(java.lang.Class<? extends I> outboundMessageType)
seeMessageToByteEncoder(Class, boolean)
withtrue
as boolean value.protected
MessageToByteEncoder(java.lang.Class<? extends I> outboundMessageType, boolean preferDirect)
Create a new instance
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
acceptOutboundMessage(java.lang.Object msg)
Returnstrue
if the given message should be handled.protected ByteBuf
allocateBuffer(ChannelHandlerContext ctx, I msg, boolean preferDirect)
Allocate aByteBuf
which will be used as argument of#encode(ChannelHandlerContext, I, ByteBuf)
.protected abstract void
encode(ChannelHandlerContext ctx, I msg, ByteBuf out)
Encode a message into aByteBuf
.protected boolean
isPreferDirect()
void
write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise)
CallsChannelOutboundInvoker.write(Object, ChannelPromise)
to forward to the nextChannelOutboundHandler
in theChannelPipeline
.-
Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter
bind, close, connect, deregister, disconnect, flush, read
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.channel.ChannelHandler
exceptionCaught, handlerAdded, handlerRemoved
-
-
-
-
Constructor Detail
-
MessageToByteEncoder
protected MessageToByteEncoder()
seeMessageToByteEncoder(boolean)
withtrue
as boolean parameter.
-
MessageToByteEncoder
protected MessageToByteEncoder(java.lang.Class<? extends I> outboundMessageType)
seeMessageToByteEncoder(Class, boolean)
withtrue
as boolean value.
-
MessageToByteEncoder
protected MessageToByteEncoder(boolean preferDirect)
Create a new instance which will try to detect the types to match out of the type parameter of the class.
-
MessageToByteEncoder
protected MessageToByteEncoder(java.lang.Class<? extends I> outboundMessageType, boolean preferDirect)
Create a new instance
-
-
Method Detail
-
acceptOutboundMessage
public boolean acceptOutboundMessage(java.lang.Object msg) throws java.lang.Exception
Returnstrue
if the given message should be handled. Iffalse
it will be passed to the nextChannelOutboundHandler
in theChannelPipeline
.- Throws:
java.lang.Exception
-
write
public void write(ChannelHandlerContext ctx, java.lang.Object msg, ChannelPromise promise) throws java.lang.Exception
Description copied from class:ChannelOutboundHandlerAdapter
CallsChannelOutboundInvoker.write(Object, ChannelPromise)
to forward to the nextChannelOutboundHandler
in theChannelPipeline
. Sub-classes may override this method to change behavior.- Specified by:
write
in interfaceChannelOutboundHandler
- Overrides:
write
in classChannelOutboundHandlerAdapter
- Parameters:
ctx
- theChannelHandlerContext
for which the write operation is mademsg
- the message to writepromise
- theChannelPromise
to notify once the operation completes- Throws:
java.lang.Exception
- thrown if an error occurs
-
allocateBuffer
protected ByteBuf allocateBuffer(ChannelHandlerContext ctx, I msg, boolean preferDirect) throws java.lang.Exception
Allocate aByteBuf
which will be used as argument of#encode(ChannelHandlerContext, I, ByteBuf)
. Sub-classes may override this method to returnByteBuf
with a perfect matchinginitialCapacity
.- Throws:
java.lang.Exception
-
encode
protected abstract void encode(ChannelHandlerContext ctx, I msg, ByteBuf out) throws java.lang.Exception
Encode a message into aByteBuf
. This method will be called for each written message that can be handled by this encoder.- Parameters:
ctx
- theChannelHandlerContext
which thisMessageToByteEncoder
belongs tomsg
- the message to encodeout
- theByteBuf
into which the encoded message will be written- Throws:
java.lang.Exception
- is thrown if an error occurs
-
isPreferDirect
protected boolean isPreferDirect()
-
-