Class HttpInput

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Runnable
    Direct Known Subclasses:
    HttpInputOverHTTP

    public class HttpInput
    extends ServletInputStream
    implements java.lang.Runnable
    HttpInput provides an implementation of ServletInputStream for HttpChannel.

    Content may arrive in patterns such as [content(), content(), messageComplete()] so that this class maintains two states: the content state that tells whether there is content to consume and the EOF state that tells whether an EOF has arrived. Only once the content has been consumed the content state is moved to the EOF state.

    • Method Detail

      • recycle

        public void recycle()
      • getInterceptor

        public HttpInput.Interceptor getInterceptor()
        Returns:
        The current Interceptor, or null if none set
      • setInterceptor

        public void setInterceptor​(HttpInput.Interceptor interceptor)
        Set the interceptor.
        Parameters:
        interceptor - The interceptor to use.
      • available

        public int available()
        Overrides:
        available in class java.io.InputStream
      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • asyncReadProduce

        public void asyncReadProduce()
                              throws java.io.IOException
        Called by channel when asynchronous IO needs to produce more content
        Throws:
        java.io.IOException - if unable to produce content
      • addContent

        public boolean addContent​(HttpInput.Content content)
        Adds some content to this input stream.
        Parameters:
        content - the content to add
        Returns:
        true if content channel woken for read
      • hasContent

        public boolean hasContent()
      • unblock

        public void unblock()
      • getContentConsumed

        public long getContentConsumed()
      • earlyEOF

        public boolean earlyEOF()
        This method should be called to signal that an EOF has been detected before all the expected content arrived.

        Typically this will result in an EOFException being thrown from a subsequent read rather than a -1 return.

        Returns:
        true if content channel woken for read
      • eof

        public boolean eof()
        This method should be called to signal that all the expected content arrived.
        Returns:
        true if content channel woken for read
      • consumeAll

        public boolean consumeAll()
      • isError

        public boolean isError()
      • isAsync

        public boolean isAsync()
      • onIdleTimeout

        public boolean onIdleTimeout​(java.lang.Throwable x)
      • failed

        public boolean failed​(java.lang.Throwable x)
      • 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