Class ZstdInputStreamNoFinalizer
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
com.github.luben.zstd.ZstdInputStreamNoFinalizer
- All Implemented Interfaces:
Closeable, AutoCloseable
InputStream filter that decompresses the data provided
by the underlying InputStream using Zstd compression.
It does not support mark/reset methods. It also does not have finalizer,
so if you rely on finalizers to clean the native memory and release
buffers use `ZstdInputStream` instead.
-
Field Summary
Fields inherited from class FilterInputStream
in -
Constructor Summary
ConstructorsConstructorDescriptionZstdInputStreamNoFinalizer(@NotNull InputStream inStream) create a new decompressing InputStreamZstdInputStreamNoFinalizer(@NotNull InputStream inStream, @NotNull BufferPool bufferPool) create a new decompressing InputStream -
Method Summary
Modifier and TypeMethodDescriptionintvoidclose()booleanbooleanintread()intread(byte @NotNull [] dst, int offset, int len) static longstatic longresetSession(@NotNull InputStream newInput) Reset the decompression stream to read from a newInputStream.@NotNull ZstdInputStreamNoFinalizersetContinuous(boolean b) Don't break on unfinished frames Use case: decompressing files that are not yet finished writing and compressing@NotNull ZstdInputStreamNoFinalizersetDict(byte @NotNull [] dict) @NotNull ZstdInputStreamNoFinalizersetDict(@NotNull ZstdDictDecompress dict) @NotNull ZstdInputStreamNoFinalizersetLongMax(int windowLogMax) @NotNull ZstdInputStreamNoFinalizersetRefMultipleDDicts(boolean useMultiple) longskip(long numBytes) Methods inherited from class FilterInputStream
mark, read, resetMethods inherited from class InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Constructor Details
-
ZstdInputStreamNoFinalizer
create a new decompressing InputStream- Parameters:
inStream- the stream to wrap- Throws:
IOException
-
ZstdInputStreamNoFinalizer
public ZstdInputStreamNoFinalizer(@NotNull @NotNull InputStream inStream, @NotNull @NotNull BufferPool bufferPool) throws IOException create a new decompressing InputStream- Parameters:
inStream- the stream to wrapbufferPool- the pool to fetch and return buffers- Throws:
IOException
-
-
Method Details
-
recommendedDInSize
public static long recommendedDInSize() -
recommendedDOutSize
public static long recommendedDOutSize() -
setContinuous
Don't break on unfinished frames Use case: decompressing files that are not yet finished writing and compressing -
getContinuous
public boolean getContinuous() -
setDict
@NotNull public @NotNull ZstdInputStreamNoFinalizer setDict(byte @NotNull [] dict) throws IOException - Throws:
IOException
-
setDict
@NotNull public @NotNull ZstdInputStreamNoFinalizer setDict(@NotNull @NotNull ZstdDictDecompress dict) throws IOException - Throws:
IOException
-
setLongMax
- Throws:
IOException
-
setRefMultipleDDicts
@NotNull public @NotNull ZstdInputStreamNoFinalizer setRefMultipleDDicts(boolean useMultiple) throws IOException - Throws:
IOException
-
read
- Overrides:
readin classFilterInputStream- Throws:
IOException
-
read
- Overrides:
readin classFilterInputStream- Throws:
IOException
-
available
- Overrides:
availablein classFilterInputStream- Throws:
IOException
-
markSupported
public boolean markSupported()- Overrides:
markSupportedin classFilterInputStream
-
skip
- Overrides:
skipin classFilterInputStream- Throws:
IOException
-
resetSession
Reset the decompression stream to read from a newInputStream. This reuses the existing nativeZSTD_DStreamcontext, including its internal window buffer and any previously loaded dictionary. The native context is reset viaZSTD_DCtx_resetwithZSTD_reset_session_only, which resets the session state without freeing or reallocating the window buffer and without clearing loaded dictionaries or parameters. If the next frame's window size fits within the existing buffer, no native memory allocation occurs at all. Previously configured settings such assetContinuous(boolean)and loaded dictionaries are preserved across the reset. The previousInputStreamis not closed; the caller is responsible for its lifecycle. This is intended for pooling: instead of creating a newZstdInputStreamNoFinalizer(which callsZSTD_createDStream+malloc) for each compressed stream and then closing it (which callsZSTD_freeDStream+free), callers can keep a single instance and callreset()with each new input stream.- Parameters:
newInput- the new compressed input stream to decompress- Returns:
- the old input stream
- Throws:
IOException- if the stream has been closed or the native reset fails
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classFilterInputStream- Throws:
IOException
-