Interface ContentProducer


public interface ContentProducer
ContentProducer is the bridge between HttpInput and Content.Source.
  • Method Details

    • recycle

      void recycle()
      A recycled ContentProducer will only produce special content with a non-null error until reopen() is called.
    • reopen

      void reopen()
      Reset all internal state, making this is instance logically equivalent to a freshly allocated one.
    • consumeAvailable

      boolean consumeAvailable()
      Fail all content currently available in this ContentProducer instance as well as in the underlying Content.Source. 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.
    • getBytesArrived

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

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

      boolean hasChunk()
      Check if this ContentProducer instance contains some content chunk without querying the underlying Content.Source. 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 Content.Source reached an error content. This call is always non-blocking. Doesn't change state. Doesn't query the HttpChannel.
      Returns:
      true if the underlying Content.Source reached an error content, false otherwise.
    • nextChunk

      Content.Chunk nextChunk()
      Get the next content chunk that can be read from or that describes the terminal condition that was reached (error, eof). This call may or may not block until some content is available, depending on the implementation. After this call, state can be either of UNREADY or IDLE.
      Returns:
      the next content chunk that can be read from or null if the implementation does not block and has no available content. The returned chunk can be empty IFF it is a failure and/or last.
    • reclaim

      void reclaim(Content.Chunk chunk)
      Free up the content by calling Retainable.release() on it and updating this instance's internal state.
    • 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 nextChunk() 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.
    • 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.