Class ZstdInputStreamNoFinalizer

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class ZstdInputStreamNoFinalizer
    extends java.io.FilterInputStream
    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.
    • Constructor Detail

      • ZstdInputStreamNoFinalizer

        public ZstdInputStreamNoFinalizer​(@NotNull
                                          @NotNull java.io.InputStream inStream)
                                   throws java.io.IOException
        create a new decompressing InputStream
        Parameters:
        inStream - the stream to wrap
        Throws:
        java.io.IOException
      • ZstdInputStreamNoFinalizer

        public ZstdInputStreamNoFinalizer​(@NotNull
                                          @NotNull java.io.InputStream inStream,
                                          @NotNull
                                          @NotNull BufferPool bufferPool)
                                   throws java.io.IOException
        create a new decompressing InputStream
        Parameters:
        inStream - the stream to wrap
        bufferPool - the pool to fetch and return buffers
        Throws:
        java.io.IOException
    • Method Detail

      • recommendedDInSize

        public static long recommendedDInSize()
      • recommendedDOutSize

        public static long recommendedDOutSize()
      • setContinuous

        @NotNull
        public @NotNull ZstdInputStreamNoFinalizer setContinuous​(boolean b)
        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 java.io.IOException
        Throws:
        java.io.IOException
      • setLongMax

        @NotNull
        public @NotNull ZstdInputStreamNoFinalizer setLongMax​(int windowLogMax)
                                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • setRefMultipleDDicts

        @NotNull
        public @NotNull ZstdInputStreamNoFinalizer setRefMultipleDDicts​(boolean useMultiple)
                                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • read

        public int read​(byte @NotNull [] dst,
                        int offset,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • read

        public int read()
                 throws java.io.IOException
        Overrides:
        read in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • available

        public int available()
                      throws java.io.IOException
        Overrides:
        available in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • markSupported

        public boolean markSupported()
        Overrides:
        markSupported in class java.io.FilterInputStream
      • skip

        public long skip​(long numBytes)
                  throws java.io.IOException
        Overrides:
        skip in class java.io.FilterInputStream
        Throws:
        java.io.IOException
      • resetSession

        public java.io.InputStream resetSession​(@NotNull
                                                @NotNull java.io.InputStream newInput)
                                         throws java.io.IOException
        Reset the decompression stream to read from a new InputStream. This reuses the existing native ZSTD_DStream context, including its internal window buffer and any previously loaded dictionary. The native context is reset via ZSTD_DCtx_reset with ZSTD_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 as setContinuous(boolean) and loaded dictionaries are preserved across the reset. The previous InputStream is not closed; the caller is responsible for its lifecycle. This is intended for pooling: instead of creating a new ZstdInputStreamNoFinalizer (which calls ZSTD_createDStream + malloc) for each compressed stream and then closing it (which calls ZSTD_freeDStream + free), callers can keep a single instance and call reset() with each new input stream.
        Parameters:
        newInput - the new compressed input stream to decompress
        Returns:
        the old input stream
        Throws:
        java.io.IOException - if the stream has been closed or the native reset fails
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterInputStream
        Throws:
        java.io.IOException