Class HttpOutput

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

    public class HttpOutput
    extends javax.servlet.ServletOutputStream
    implements java.lang.Runnable

    HttpOutput implements ServletOutputStream as required by the Servlet specification.

    HttpOutput buffers content written by the application until a further write will overflow the buffer, at which point it triggers a commit of the response.

    HttpOutput can be closed and reopened, to allow requests included via RequestDispatcher.include(ServletRequest, ServletResponse) to close the stream, to be reopened after the inclusion ends.

    • Constructor Detail

      • HttpOutput

        public HttpOutput​(HttpChannel channel)
    • Method Detail

      • isWritten

        public boolean isWritten()
      • getWritten

        public long getWritten()
      • reopen

        public void reopen()
      • acquireWriteBlockingCallback

        protected SharedBlockingCallback.Blocker acquireWriteBlockingCallback()
                                                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • softClose

        public void softClose()
      • complete

        public void complete​(Callback callback)
      • completed

        public void completed​(java.lang.Throwable failure)
        Called to indicate that the request cycle has been completed.
      • 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.OutputStream
        Throws:
        java.io.IOException
      • getBuffer

        public java.nio.ByteBuffer getBuffer()
      • isClosed

        public boolean isClosed()
      • isAsync

        public boolean isAsync()
      • flush

        public void flush()
                   throws java.io.IOException
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] b,
                          int off,
                          int len)
                   throws java.io.IOException
        Overrides:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(java.nio.ByteBuffer buffer)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • write

        public void write​(int b)
                   throws java.io.IOException
        Specified by:
        write in class java.io.OutputStream
        Throws:
        java.io.IOException
      • print

        public void print​(java.lang.String s)
                   throws java.io.IOException
        Overrides:
        print in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(java.lang.String s)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(boolean b)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(char c)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(int i)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(long l)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(float f)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • println

        public void println​(double d)
                     throws java.io.IOException
        Overrides:
        println in class javax.servlet.ServletOutputStream
        Throws:
        java.io.IOException
      • sendContent

        public void sendContent​(java.nio.ByteBuffer content)
                         throws java.io.IOException
        Blocking send of whole content.
        Parameters:
        content - The whole content to send
        Throws:
        java.io.IOException - if the send fails
      • sendContent

        public void sendContent​(java.io.InputStream in)
                         throws java.io.IOException
        Blocking send of stream content.
        Parameters:
        in - The stream content to send
        Throws:
        java.io.IOException - if the send fails
      • sendContent

        public void sendContent​(java.nio.channels.ReadableByteChannel in)
                         throws java.io.IOException
        Blocking send of channel content.
        Parameters:
        in - The channel content to send
        Throws:
        java.io.IOException - if the send fails
      • sendContent

        public void sendContent​(HttpContent content)
                         throws java.io.IOException
        Blocking send of HTTP content.
        Parameters:
        content - The HTTP content to send
        Throws:
        java.io.IOException - if the send fails
      • sendContent

        public void sendContent​(java.nio.ByteBuffer content,
                                Callback callback)
        Asynchronous send of whole content.
        Parameters:
        content - The whole content to send
        callback - The callback to use to notify success or failure
      • sendContent

        public void sendContent​(java.io.InputStream in,
                                Callback callback)
        Asynchronous send of stream content. The stream will be closed after reading all content.
        Parameters:
        in - The stream content to send
        callback - The callback to use to notify success or failure
      • sendContent

        public void sendContent​(java.nio.channels.ReadableByteChannel in,
                                Callback callback)
        Asynchronous send of channel content. The channel will be closed after reading all content.
        Parameters:
        in - The channel content to send
        callback - The callback to use to notify success or failure
      • sendContent

        public void sendContent​(HttpContent httpContent,
                                Callback callback)
        Asynchronous send of HTTP content.
        Parameters:
        httpContent - The HTTP content to send
        callback - The callback to use to notify success or failure
      • getBufferSize

        public int getBufferSize()
      • setBufferSize

        public void setBufferSize​(int size)
      • onFlushed

        public void onFlushed​(long bytes)
                       throws java.io.IOException

        Invoked when bytes have been flushed to the network.

        The number of flushed bytes may be different from the bytes written by the application if an HttpOutput.Interceptor changed them, for example by compressing them.

        Parameters:
        bytes - the number of bytes flushed
        Throws:
        java.io.IOException - if the minimum data rate, when set, is not respected
        See Also:
        WriteFlusher.Listener
      • recycle

        public void recycle()
      • resetBuffer

        public void resetBuffer()
      • setWriteListener

        public void setWriteListener​(javax.servlet.WriteListener writeListener)
        Specified by:
        setWriteListener in class javax.servlet.ServletOutputStream
      • isReady

        public boolean isReady()
        Specified by:
        isReady in class javax.servlet.ServletOutputStream
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object