Class DefensiveDecompressor
- java.lang.Object
-
- io.netty.handler.codec.compression.DefensiveDecompressor
-
- All Implemented Interfaces:
Decompressor,java.lang.AutoCloseable
final class DefensiveDecompressor extends java.lang.Object implements Decompressor
Most decompressor implementations play fast and loose withDecompressorAPI contracts. This wrapper makes sure callers follow that contract.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.netty.handler.codec.compression.Decompressor
Decompressor.AbstractDecompressorBuilder, Decompressor.Status
-
-
Field Summary
Fields Modifier and Type Field Description private booleanclosedprivate Decompressordelegateprivate booleanfailedprivate Decompressor.Statusstatus
-
Constructor Summary
Constructors Constructor Description DefensiveDecompressor(Decompressor delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddInput(ByteBuf buf)Add a new input buffer.private voidcheckReady()private voidcheckState(Decompressor.Status expected)voidclose()Close this decompressor, cleaning up any associated resources.voidendOfInput()Notify the decompressor that the end of input has been reached.Decompressor.Statusstatus()Get the current status.ByteBuftakeOutput()Take a decompressed buffer from this decompressor.
-
-
-
Field Detail
-
delegate
private final Decompressor delegate
-
status
private Decompressor.Status status
-
closed
private boolean closed
-
failed
private boolean failed
-
-
Constructor Detail
-
DefensiveDecompressor
DefensiveDecompressor(Decompressor delegate)
-
-
Method Detail
-
status
public Decompressor.Status status() throws DecompressionException
Description copied from interface:DecompressorGet the current status. Like the other operations on this class, calling this method is not permitted if the decompressor has failed or was closed.- Specified by:
statusin interfaceDecompressor- Returns:
- The current status
- Throws:
DecompressionException
-
addInput
public void addInput(ByteBuf buf) throws DecompressionException
Description copied from interface:DecompressorAdd a new input buffer. Only permitted forDecompressor.Status.NEED_INPUT.- Specified by:
addInputin interfaceDecompressor- Parameters:
buf- The input buffer. Buffer ownership transfers to the decompressor (also on exception).- Throws:
DecompressionException
-
endOfInput
public void endOfInput() throws DecompressionExceptionDescription copied from interface:DecompressorNotify the decompressor that the end of input has been reached. Some implementations may flush remaining data or throw an exception if the input is truncated, but most implementations do nothing. Only permitted forDecompressor.Status.NEED_INPUT.- Specified by:
endOfInputin interfaceDecompressor- Throws:
DecompressionException
-
takeOutput
public ByteBuf takeOutput() throws DecompressionException
Description copied from interface:DecompressorTake a decompressed buffer from this decompressor. Only permitted forDecompressor.Status.NEED_OUTPUT. Buffer ownership transfers to the caller.- Specified by:
takeOutputin interfaceDecompressor- Returns:
- The decompressed buffer. May be empty.
- Throws:
DecompressionException
-
close
public void close()
Description copied from interface:DecompressorClose this decompressor, cleaning up any associated resources. This method is idempotent.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfaceDecompressor
-
checkReady
private void checkReady()
-
checkState
private void checkState(Decompressor.Status expected)
-
-