Class ChunkedOutput<T>

  • Type Parameters:
    T - chunk type.
    All Implemented Interfaces:
    Closeable, AutoCloseable

    public class ChunkedOutput<T>
    extends GenericType<T>
    implements Closeable
    Used for sending messages in "typed" chunks. Useful for long running processes, which needs to produce partial responses.
    Author:
    Pavel Bucek, Martin Matula, Marek Potociar
    • Constructor Detail

      • ChunkedOutput

        protected ChunkedOutput()
        Create new ChunkedOutput.
      • ChunkedOutput

        public ChunkedOutput​(Type chunkType)
        Create ChunkedOutput with specified type.
        Parameters:
        chunkType - chunk type. Must not be {code null}.
      • ChunkedOutput

        protected ChunkedOutput​(byte[] chunkDelimiter)
        Create new ChunkedOutput with a custom chunk delimiter.
        Parameters:
        chunkDelimiter - custom chunk delimiter bytes. Must not be {code null}.
        Since:
        2.4.1
      • ChunkedOutput

        protected ChunkedOutput​(byte[] chunkDelimiter,
                                jakarta.inject.Provider<AsyncContext> asyncContextProvider)
        Create new ChunkedOutput with a custom chunk delimiter.
        Parameters:
        chunkDelimiter - custom chunk delimiter bytes. Must not be {code null}.
        Since:
        2.4.1
      • ChunkedOutput

        public ChunkedOutput​(Type chunkType,
                             byte[] chunkDelimiter)
        Create new ChunkedOutput with a custom chunk delimiter.
        Parameters:
        chunkType - chunk type. Must not be {code null}.
        chunkDelimiter - custom chunk delimiter bytes. Must not be {code null}.
        Since:
        2.4.1
      • ChunkedOutput

        protected ChunkedOutput​(String chunkDelimiter)
        Create new ChunkedOutput with a custom chunk delimiter.
        Parameters:
        chunkDelimiter - custom chunk delimiter string. Must not be {code null}.
        Since:
        2.4.1
      • ChunkedOutput

        public ChunkedOutput​(Type chunkType,
                             String chunkDelimiter)
        Create new ChunkedOutput with a custom chunk delimiter.
        Parameters:
        chunkType - chunk type. Must not be {code null}.
        chunkDelimiter - custom chunk delimiter string. Must not be {code null}.
        Since:
        2.4.1
    • Method Detail

      • write

        public void write​(T chunk)
                   throws IOException
        Write a chunk.
        Parameters:
        chunk - a chunk instance to be written.
        Throws:
        IOException - if this response is closed or when encountered any problem during serializing or writing a chunk.
      • close

        public void close()
                   throws IOException
        Close this response - it will be finalized and underlying connections will be closed or made available for another response.
        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Throws:
        IOException
      • isClosed

        public boolean isClosed()
        Get state information. Please note that ChunkedOutput can be closed by the client side - client can close connection from its side.
        Returns:
        true when closed, false otherwise.
      • onClose

        protected void onClose​(Exception e)
        Executed only in case of close being triggered by client.
        Parameters:
        e - Exception causing the close