@Contract(threading=SAFE_CONDITIONAL) public abstract class AbstractBinAsyncEntityProducer extends Object implements AsyncEntityProducer
| Constructor and Description |
|---|
AbstractBinAsyncEntityProducer(int fragmentSizeHint,
ContentType contentType) |
| Modifier and Type | Method and Description |
|---|---|
int |
available()
Returns the number of bytes immediately available for output.
|
protected abstract int |
availableData()
Returns the number of bytes immediately available for output.
|
String |
getContentEncoding()
Gets content encoding of this entity, if known.
|
long |
getContentLength()
Gets length of this entity, if known.
|
String |
getContentType()
Gets content type of this entity, if known.
|
Set<String> |
getTrailerNames()
Gets the preliminary declaration of trailing headers.
|
boolean |
isChunked()
Tests the chunked transfer hint for this entity.
|
void |
produce(DataStreamChannel channel)
Triggered to signal the ability of the underlying data channel
to accept more data.
|
protected abstract void |
produceData(StreamChannel<ByteBuffer> channel)
Triggered to signal the ability of the underlying byte channel
to accept more data.
|
void |
releaseResources() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitfailed, isRepeatablepublic AbstractBinAsyncEntityProducer(int fragmentSizeHint,
ContentType contentType)
protected abstract int availableData()
protected abstract void produceData(StreamChannel<ByteBuffer> channel) throws IOException
StreamChannel passed to this method is threading-safe.
channel - the data channel capable to accepting more data.IOException - in case of an I/O error.public final String getContentType()
EntityDetailsgetContentType in interface EntityDetailsnull.public String getContentEncoding()
EntityDetailsgetContentEncoding in interface EntityDetailsnull.public boolean isChunked()
EntityDetailsThe behavior of wrapping entities is implementation dependent, but should respect the primary purpose.
isChunked in interface EntityDetailspublic Set<String> getTrailerNames()
EntityDetailsgetTrailerNames in interface EntityDetailspublic long getContentLength()
EntityDetailsgetContentLength in interface EntityDetails0.public final int available()
AsyncDataProducer
Please note this method should return zero if the data producer
is unable to produce any more data, in which case
AsyncDataProducer.produce(DataStreamChannel) method will not get triggered.
The producer can resume writing out data asynchronously
once more data becomes available or request output readiness events
with DataStreamChannel.requestOutput().
available in interface AsyncDataProducerAsyncDataProducer.produce(DataStreamChannel),
DataStreamChannel.requestOutput()public final void produce(DataStreamChannel channel) throws IOException
AsyncDataProducer
Please note this method gets triggered only if AsyncDataProducer.available()
returns a positive value.
produce in interface AsyncDataProducerchannel - the data channel capable of accepting more data.IOException - in case of an I/O error.AsyncDataProducer.available()public void releaseResources()
releaseResources in interface ResourceHolderCopyright © 2005–2021 The Apache Software Foundation. All rights reserved.