Interface ContentProducer

    • Method Detail

      • lock

        AutoLock lock()
        Lock this instance. The lock must be held before any method of this instance's method be called, and must be manually released afterward.
        Returns:
        the lock that is guarding this instance.
      • recycle

        void recycle()
        Reset all internal state and clear any held resources.
      • consumeAll

        boolean consumeAll()
        Fail all content currently available in this ContentProducer instance as well as in the underlying HttpChannel. This call is always non-blocking. Doesn't change state.
        Returns:
        true if EOF was reached.
      • checkMinDataRate

        void checkMinDataRate()
        Check if the current data rate consumption is above the minimal rate. Abort the channel, fail the content currently available and throw a BadMessageException(REQUEST_TIMEOUT_408) if the check fails.
      • getRawContentArrived

        long getRawContentArrived()
        Get the byte count produced by the underlying HttpChannel. This call is always non-blocking. Doesn't change state.
        Returns:
        the byte count produced by the underlying HttpChannel.
      • available

        int available()
        Get the byte count that can immediately be read from this ContentProducer instance or the underlying HttpChannel. This call is always non-blocking. Doesn't change state.
        Returns:
        the available byte count.
      • hasContent

        boolean hasContent()
        Check if this ContentProducer instance contains some content without querying the underlying HttpChannel. This call is always non-blocking. Doesn't change state. Doesn't query the HttpChannel.
        Returns:
        true if this ContentProducer instance contains content, false otherwise.
      • isError

        boolean isError()
        Check if the underlying HttpChannel reached an error content. This call is always non-blocking. Doesn't change state. Doesn't query the HttpChannel.
        Returns:
        true if the underlying HttpChannel reached an error content, false otherwise.
      • nextContent

        HttpInput.Content nextContent()
        Get the next content that can be read from or that describes the special condition that was reached (error, eof). This call may or may not block until some content is available, depending on the implementation. The returned content is decoded by the interceptor set with setInterceptor(HttpInput.Interceptor) or left as-is if no intercept is set. After this call, state can be either of UNREADY or IDLE.
        Returns:
        the next content that can be read from or null if the implementation does not block and has no available content.
      • isReady

        boolean isReady()
        Check if this ContentProducer instance has some content that can be read without blocking. If there is some, the next call to nextContent() will not block. If there isn't any and the implementation does not block, this method will trigger a ReadListener callback once some content is available. This call is always non-blocking.
        Returns:
        true if some content is immediately available, false otherwise.
      • setInterceptor

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

        boolean onContentProducible()
        Wake up the thread that is waiting for the next content. After this call, state can be READY.
        Returns:
        true if the thread has to be rescheduled, false otherwise.