Class DeflatingZstdEntityProducer
java.lang.Object
org.apache.hc.client5.http.async.methods.DeflatingZstdEntityProducer
- All Implemented Interfaces:
org.apache.hc.core5.http.EntityDetails,org.apache.hc.core5.http.nio.AsyncDataProducer,org.apache.hc.core5.http.nio.AsyncEntityProducer,org.apache.hc.core5.http.nio.ResourceHolder
public final class DeflatingZstdEntityProducer
extends Object
implements org.apache.hc.core5.http.nio.AsyncEntityProducer
AsyncEntityProducer that compresses the bytes produced by a delegate entity
into a single Zstandard (zstd) frame
on the fly.
This producer wraps a AsyncEntityProducer and
performs streaming, ByteBuffer-to-ByteBuffer compression as the delegate writes to the
provided DataStreamChannel. No InputStream
is used in the client pipeline.
Metadata reported by this producer:
getContentEncoding()returns"zstd".getContentLength()returns-1(unknown after compression).isChunked()returnstrue(requests are typically sent chunked).
Behavior
- Streaming & back-pressure: compressed output is staged in direct
ByteBuffers and written only when the channel accepts bytes. WhenDataStreamChannel.write(...)returns0, the producer pauses and requests another output turn. - Finalization: after the delegate signals
endStream(), this producer emits the zstd frame epilogue and then callsDataStreamChannel.endStream(). - Repeatability: repeatable only if the delegate is repeatable.
- Headers: callers are responsible for sending
Content-Encoding: zstdon the request if required by the server. Content length is not known in advance. - Resources: invoke
releaseResources()to free native compressor resources.
Constructors
DeflatingZstdEntityProducer(delegate)– uses a default compression level.DeflatingZstdEntityProducer(delegate, level)– explicitly sets the zstd level.
Thread-safety
Not thread-safe; one instance per message exchange.
Runtime dependency
Requires com.github.luben:zstd-jni on the classpath.
- Since:
- 5.6
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionDeflatingZstdEntityProducer(org.apache.hc.core5.http.nio.AsyncEntityProducer delegate) DeflatingZstdEntityProducer(org.apache.hc.core5.http.nio.AsyncEntityProducer delegate, int level) -
Method Summary
Modifier and TypeMethodDescriptionintvoidlongbooleanbooleanvoidproduce(org.apache.hc.core5.http.nio.DataStreamChannel chan) void
-
Constructor Details
-
DeflatingZstdEntityProducer
public DeflatingZstdEntityProducer(org.apache.hc.core5.http.nio.AsyncEntityProducer delegate) -
DeflatingZstdEntityProducer
public DeflatingZstdEntityProducer(org.apache.hc.core5.http.nio.AsyncEntityProducer delegate, int level)
-
-
Method Details
-
isRepeatable
public boolean isRepeatable()- Specified by:
isRepeatablein interfaceorg.apache.hc.core5.http.nio.AsyncEntityProducer
-
getContentLength
public long getContentLength()- Specified by:
getContentLengthin interfaceorg.apache.hc.core5.http.EntityDetails
-
getContentType
- Specified by:
getContentTypein interfaceorg.apache.hc.core5.http.EntityDetails
-
getContentEncoding
- Specified by:
getContentEncodingin interfaceorg.apache.hc.core5.http.EntityDetails
-
isChunked
public boolean isChunked()- Specified by:
isChunkedin interfaceorg.apache.hc.core5.http.EntityDetails
-
getTrailerNames
- Specified by:
getTrailerNamesin interfaceorg.apache.hc.core5.http.EntityDetails
-
available
public int available()- Specified by:
availablein interfaceorg.apache.hc.core5.http.nio.AsyncDataProducer
-
produce
- Specified by:
producein interfaceorg.apache.hc.core5.http.nio.AsyncDataProducer- Throws:
IOException
-
failed
- Specified by:
failedin interfaceorg.apache.hc.core5.http.nio.AsyncEntityProducer
-
releaseResources
public void releaseResources()- Specified by:
releaseResourcesin interfaceorg.apache.hc.core5.http.nio.ResourceHolder
-