public class Lz4FrameEncoder extends MessageToByteEncoder<ByteBuf>
ByteBuf
using the LZ4 format.
See original LZ4 Github project
and LZ4 block format
for full description.
Since the original LZ4 block format does not contains size of compressed block and size of original data
this encoder uses format like LZ4 Java library
written by Adrien Grand and approved by Yann Collet (author of original LZ4 library).
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Magic * Token * Compressed * Decompressed * Checksum * + * LZ4 compressed *
* * * length * length * * * block *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *ChannelHandler.Sharable
Constructor and Description |
---|
Lz4FrameEncoder()
Creates the fastest LZ4 encoder with default block size (64 KB)
and xxhash hashing for Java, based on Yann Collet's work available at
Github.
|
Lz4FrameEncoder(boolean highCompressor)
Creates a new LZ4 encoder with hight or fast compression, default block size (64 KB)
and xxhash hashing for Java, based on Yann Collet's work available at
Github.
|
Lz4FrameEncoder(LZ4Factory factory,
boolean highCompressor,
int blockSize,
Checksum checksum)
Creates a new customizable LZ4 encoder.
|
Lz4FrameEncoder(LZ4Factory factory,
boolean highCompressor,
int blockSize,
Checksum checksum,
int maxEncodeSize)
Creates a new customizable LZ4 encoder.
|
Modifier and Type | Method and Description |
---|---|
protected ByteBuf |
allocateBuffer(ChannelHandlerContext ctx,
ByteBuf msg,
boolean preferDirect)
Allocate a
ByteBuf which will be used as argument of #encode(ChannelHandlerContext, I, ByteBuf) . |
ChannelFuture |
close()
Close this
Lz4FrameEncoder and so finish the encoding. |
void |
close(ChannelHandlerContext ctx,
ChannelPromise promise)
Calls
ChannelOutboundInvoker.close(ChannelPromise) to forward
to the next ChannelOutboundHandler in the ChannelPipeline . |
ChannelFuture |
close(ChannelPromise promise)
Close this
Lz4FrameEncoder and so finish the encoding. |
protected void |
encode(ChannelHandlerContext ctx,
ByteBuf in,
ByteBuf out)
Encode a message into a
ByteBuf . |
void |
flush(ChannelHandlerContext ctx)
Calls
ChannelHandlerContext.flush() to forward
to the next ChannelOutboundHandler in the ChannelPipeline . |
void |
handlerAdded(ChannelHandlerContext ctx)
Do nothing by default, sub-classes may override this method.
|
void |
handlerRemoved(ChannelHandlerContext ctx)
Do nothing by default, sub-classes may override this method.
|
boolean |
isClosed()
Returns
true if and only if the compressed stream has been finished. |
acceptOutboundMessage, isPreferDirect, write
bind, connect, deregister, disconnect, read
ensureNotSharable, exceptionCaught, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
exceptionCaught
public Lz4FrameEncoder()
public Lz4FrameEncoder(boolean highCompressor)
highCompressor
- if true
codec will use compressor which requires more memory
and is slower but compresses more efficientlypublic Lz4FrameEncoder(LZ4Factory factory, boolean highCompressor, int blockSize, Checksum checksum)
factory
- user customizable LZ4Factory
instance
which may be JNI bindings to the original C implementation, a pure Java implementation
or a Java implementation that uses the Unsafe
highCompressor
- if true
codec will use compressor which requires more memory
and is slower but compresses more efficientlyblockSize
- the maximum number of bytes to try to compress at once,
must be >= 64 and <= 32 Mchecksum
- the Checksum
instance to use to check data for integritypublic Lz4FrameEncoder(LZ4Factory factory, boolean highCompressor, int blockSize, Checksum checksum, int maxEncodeSize)
factory
- user customizable LZ4Factory
instance
which may be JNI bindings to the original C implementation, a pure Java implementation
or a Java implementation that uses the Unsafe
highCompressor
- if true
codec will use compressor which requires more memory
and is slower but compresses more efficientlyblockSize
- the maximum number of bytes to try to compress at once,
must be >= 64 and <= 32 Mchecksum
- the Checksum
instance to use to check data for integritymaxEncodeSize
- the maximum size for an encode (compressed) bufferprotected ByteBuf allocateBuffer(ChannelHandlerContext ctx, ByteBuf msg, boolean preferDirect)
MessageToByteEncoder
ByteBuf
which will be used as argument of #encode(ChannelHandlerContext, I, ByteBuf)
.
Sub-classes may override this method to return ByteBuf
with a perfect matching initialCapacity
.allocateBuffer
in class MessageToByteEncoder<ByteBuf>
protected void encode(ChannelHandlerContext ctx, ByteBuf in, ByteBuf out) throws Exception
ByteBuf
. This method will be called for each written message that can be handled
by this encoder.
Encodes the input buffer into blockSize
chunks in the output buffer. Data is only compressed and
written once we hit the blockSize
; else, it is copied into the backing buffer
to await
more data.encode
in class MessageToByteEncoder<ByteBuf>
ctx
- the ChannelHandlerContext
which this MessageToByteEncoder
belongs toin
- the message to encodeout
- the ByteBuf
into which the encoded message will be writtenException
- is thrown if an error occurspublic void flush(ChannelHandlerContext ctx) throws Exception
ChannelOutboundHandlerAdapter
ChannelHandlerContext.flush()
to forward
to the next ChannelOutboundHandler
in the ChannelPipeline
.
Sub-classes may override this method to change behavior.flush
in interface ChannelOutboundHandler
flush
in class ChannelOutboundHandlerAdapter
ctx
- the ChannelHandlerContext
for which the flush operation is madeException
- thrown if an error occurspublic boolean isClosed()
true
if and only if the compressed stream has been finished.public ChannelFuture close()
Lz4FrameEncoder
and so finish the encoding.
The returned ChannelFuture
will be notified once the operation completes.public ChannelFuture close(ChannelPromise promise)
Lz4FrameEncoder
and so finish the encoding.
The given ChannelFuture
will be notified once the operation
completes and will also be returned.public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception
ChannelOutboundHandlerAdapter
ChannelOutboundInvoker.close(ChannelPromise)
to forward
to the next ChannelOutboundHandler
in the ChannelPipeline
.
Sub-classes may override this method to change behavior.close
in interface ChannelOutboundHandler
close
in class ChannelOutboundHandlerAdapter
ctx
- the ChannelHandlerContext
for which the close operation is madepromise
- the ChannelPromise
to notify once the operation completesException
- thrown if an error occurspublic void handlerAdded(ChannelHandlerContext ctx)
ChannelHandlerAdapter
handlerAdded
in interface ChannelHandler
handlerAdded
in class ChannelHandlerAdapter
public void handlerRemoved(ChannelHandlerContext ctx) throws Exception
ChannelHandlerAdapter
handlerRemoved
in interface ChannelHandler
handlerRemoved
in class ChannelHandlerAdapter
Exception
Copyright © 2008–2017 The Netty Project. All rights reserved.