Interface ContentProducer
public interface ContentProducer
ContentProducer is the bridge between 
HttpInput and Content.Source.- 
Method Summary
Modifier and TypeMethodDescriptionintGet the byte count that can immediately be read from thisContentProducerinstance or the underlyingContent.Source.voidCheck if the current data rate consumption is above the minimal rate.booleanConsumes all content currently available in thisContentProducerinstance as well as in the underlyingContent.Source.Get theHttpInput.Interceptor.longGet the byte count produced by the underlyingContent.Source.booleanCheck if thisContentProducerinstance contains some content without querying the underlyingContent.Source.booleanisError()Check if the underlyingContent.Sourcereached an error content.booleanisReady()Check if thisContentProducerinstance has some content that can be read without blocking.lock()Lock this instance.Get the next content that can be read from or that describes the special condition that was reached (error, eof).booleanWake up the thread that is waiting for the next content.voidreclaim(HttpInput.Content content) Free up the content by callingCallback.succeeded()on it and updating this instance' internal state.voidrecycle()Clear the interceptor and callDestroyable.destroy()on it if it implementsDestroyable.voidreopen()Reset all internal state, making this is instance logically equivalent to a freshly allocated one.voidsetInterceptor(HttpInput.Interceptor interceptor) Set the interceptor. 
- 
Method Details
- 
lock
AutoLock lock()Lock this instance. The lock must be held before any of this instance's method can be called, and must be released afterward.- Returns:
 - the lock that is guarding this instance.
 
 - 
recycle
void recycle()Clear the interceptor and callDestroyable.destroy()on it if it implementsDestroyable. A recycledContentProducerwill only produce special content with a non-null error untilreopen()is called. - 
reopen
void reopen()Reset all internal state, making this is instance logically equivalent to a freshly allocated one. - 
consumeAll
boolean consumeAll()Consumes all content currently available in thisContentProducerinstance as well as in the underlyingContent.Source. This call is always non-blocking.- 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 underlyingContent.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 thisContentProducerinstance or the underlyingContent.Source. This call is always non-blocking. Doesn't change state.- Returns:
 - the available byte count.
 
 - 
hasContent
boolean hasContent()Check if thisContentProducerinstance contains some content without querying the underlyingContent.Source. This call is always non-blocking. Doesn't change state. Doesn't query the HttpChannel.- Returns:
 - true if this 
ContentProducerinstance contains content, false otherwise. 
 - 
isError
boolean isError()Check if the underlyingContent.Sourcereached an error content. This call is always non-blocking. Doesn't change state. Doesn't query the HttpChannel.- Returns:
 - true if the underlying 
Content.Sourcereached 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 withsetInterceptor(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.
 
 - 
reclaim
Free up the content by callingCallback.succeeded()on it and updating this instance' internal state. - 
isReady
boolean isReady()Check if thisContentProducerinstance has some content that can be read without blocking. If there is some, the next call tonextContent()will not block. If there isn't any and the implementation does not block, this method will trigger aReadListenercallback once some content is available. This call is always non-blocking.- Returns:
 - true if some content is immediately available, false otherwise.
 
 - 
getInterceptor
HttpInput.Interceptor getInterceptor()Get theHttpInput.Interceptor.- Returns:
 - The 
HttpInput.Interceptor, or null if none set. 
 - 
setInterceptor
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.
 
 
 -