Class HttpOutput

java.lang.Object
java.io.OutputStream
javax.servlet.ServletOutputStream
org.eclipse.jetty.server.HttpOutput
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable, Runnable

public class HttpOutput extends javax.servlet.ServletOutputStream implements 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 Details

  • Method Details

    • getHttpChannel

      public HttpChannel getHttpChannel()
    • getInterceptor

      public HttpOutput.Interceptor getInterceptor()
    • setInterceptor

      public void setInterceptor(HttpOutput.Interceptor interceptor)
    • isWritten

      public boolean isWritten()
    • getWritten

      public long getWritten()
    • reopen

      public void reopen()
    • acquireWriteBlockingCallback

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

      public void softClose()
    • complete

      public void complete(Callback callback)
    • completed

      public void completed(Throwable failure)
      Called to indicate that the request cycle has been completed.
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
      Throws:
      IOException
    • getBuffer

      public ByteBuffer getBuffer()
    • isClosed

      public boolean isClosed()
    • isAsync

      public boolean isAsync()
    • flush

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

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

      public void write(ByteBuffer buffer) throws IOException
      Throws:
      IOException
    • write

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

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

      public void println(String s) throws IOException
      Overrides:
      println in class javax.servlet.ServletOutputStream
      Throws:
      IOException
    • sendContent

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

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

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

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

      public void sendContent(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(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(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 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:
      IOException - if the minimum data rate, when set, is not respected
      See Also:
    • 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 Runnable
    • toString

      public String toString()
      Overrides:
      toString in class Object