Class VoidInputFilter

  • All Implemented Interfaces:
    InputFilter, InputBuffer

    public class VoidInputFilter
    extends Object
    implements InputFilter
    Void input filter, which returns -1 when attempting a read. Used with a GET, HEAD, or a similar request.
    Author:
    Remy Maucherat
    • Constructor Detail

      • VoidInputFilter

        public VoidInputFilter()
    • Method Detail

      • doRead

        @Deprecated
        public int doRead​(ByteChunk chunk)
                   throws IOException
        Deprecated.
        Unused. Will be removed in Tomcat 9. Use doRead(ApplicationBufferHandler)
        Description copied from interface: InputBuffer
        Read from the input stream into the given buffer. IMPORTANT: the current model assumes that the protocol will 'own' the buffer and return a pointer to it in ByteChunk (i.e. the param will have chunk.getBytes()==null before call, and the result after the call).
        Specified by:
        doRead in interface InputBuffer
        Parameters:
        chunk - The buffer to read data into.
        Returns:
        The number of bytes that have been added to the buffer or -1 for end of stream
        Throws:
        IOException - If an I/O error occurs reading from the input stream
      • doRead

        public int doRead​(ApplicationBufferHandler handler)
                   throws IOException
        Description copied from interface: InputBuffer
        Read from the input stream into the ByteBuffer provided by the ApplicationBufferHandler. IMPORTANT: the current model assumes that the protocol will 'own' the ByteBuffer and return a pointer to it.
        Specified by:
        doRead in interface InputBuffer
        Parameters:
        handler - ApplicationBufferHandler that provides the buffer to read data into.
        Returns:
        The number of bytes that have been added to the buffer or -1 for end of stream
        Throws:
        IOException - If an I/O error occurs reading from the input stream
      • setRequest

        public void setRequest​(Request request)
        Set the associated request.
        Specified by:
        setRequest in interface InputFilter
        Parameters:
        request - The request to be associated with this filter
      • setBuffer

        public void setBuffer​(InputBuffer buffer)
        Set the next buffer in the filter pipeline.
        Specified by:
        setBuffer in interface InputFilter
        Parameters:
        buffer - The next buffer
      • recycle

        public void recycle()
        Make the filter ready to process the next request.
        Specified by:
        recycle in interface InputFilter
      • getEncodingName

        public ByteChunk getEncodingName()
        Return the name of the associated encoding; Here, the value is "void".
        Specified by:
        getEncodingName in interface InputFilter
        Returns:
        The encoding name as a byte chunk to facilitate comparison with the value read from the HTTP headers which will also be a ByteChunk
      • end

        public long end()
                 throws IOException
        End the current request. It is acceptable to write extra bytes using buffer.doWrite during the execution of this method.
        Specified by:
        end in interface InputFilter
        Returns:
        Should return 0 unless the filter does some content length delimitation, in which case the number is the amount of extra bytes or missing bytes, which would indicate an error. Note: It is recommended that extra bytes be swallowed by the filter.
        Throws:
        IOException - If an error happens
      • available

        public int available()
        Description copied from interface: InputBuffer
        Obtain an estimate of the number of bytes that can be read without blocking. Typically, this will be the number of available bytes known to be buffered.
        Specified by:
        available in interface InputBuffer
        Returns:
        The number of bytes that can be read without blocking
      • isFinished

        public boolean isFinished()
        Description copied from interface: InputFilter
        Has the request body been read fully?
        Specified by:
        isFinished in interface InputFilter
        Returns:
        true if the request body has been fully read, otherwise false