@Contract(threading=SAFE) public final class ReactiveEntityProducer extends Object implements AsyncEntityProducer
AsyncEntityProducer
that subscribes to a Publisher
instance, as defined by the Reactive Streams specification.Constructor and Description |
---|
ReactiveEntityProducer(org.reactivestreams.Publisher<ByteBuffer> publisher,
long contentLength,
ContentType contentType,
String contentEncoding)
Creates a new
ReactiveEntityProducer with the given parameters. |
Modifier and Type | Method and Description |
---|---|
int |
available()
Returns the number of bytes immediately available for output.
|
void |
failed(Exception cause)
Triggered to signal a failure in data generation.
|
String |
getContentEncoding()
Returns content encoding of the entity, if known.
|
long |
getContentLength()
Returns length of the entity, if known.
|
String |
getContentType()
Returns content type of the entity, if known.
|
Set<String> |
getTrailerNames()
Preliminary declaration of trailing headers.
|
boolean |
isChunked()
Returns chunked transfer hint for this entity.
|
boolean |
isRepeatable()
Determines whether the producer can consistently produce the same content
after invocation of
ResourceHolder.releaseResources() . |
void |
produce(DataStreamChannel channel)
Triggered to signal the ability of the underlying data channel
to accept more data.
|
void |
releaseResources() |
public ReactiveEntityProducer(org.reactivestreams.Publisher<ByteBuffer> publisher, long contentLength, ContentType contentType, String contentEncoding)
ReactiveEntityProducer
with the given parameters.publisher
- the publisher of the entity stream.contentLength
- the length of the entity, or -1 if unknown (implies chunked encoding).contentType
- the Content-Type
of the entity, or null if none.contentEncoding
- the Content-Encoding
of the entity, or null if none.public int available()
AsyncDataProducer
available
in interface AsyncDataProducer
public void produce(DataStreamChannel channel) throws IOException
AsyncDataProducer
produce
in interface AsyncDataProducer
channel
- the data channel capable to accepting more data.IOException
public void releaseResources()
releaseResources
in interface ResourceHolder
public boolean isRepeatable()
AsyncEntityProducer
ResourceHolder.releaseResources()
.isRepeatable
in interface AsyncEntityProducer
public void failed(Exception cause)
AsyncEntityProducer
failed
in interface AsyncEntityProducer
cause
- the cause of the failure.public long getContentLength()
EntityDetails
getContentLength
in interface EntityDetails
public String getContentType()
EntityDetails
getContentType
in interface EntityDetails
public String getContentEncoding()
EntityDetails
getContentEncoding
in interface EntityDetails
public boolean isChunked()
EntityDetails
The behavior of wrapping entities is implementation dependent, but should respect the primary purpose.
isChunked
in interface EntityDetails
public Set<String> getTrailerNames()
EntityDetails
getTrailerNames
in interface EntityDetails
Copyright © 2005–2021 The Apache Software Foundation. All rights reserved.