ddn.compressor.zstd

ddn.compressor.zstd

Zstandard (ZSTD) compression/decompression provider built on ddn-lib-zstd.

This module implements the streaming Compressor and Decompressor interfaces from ddn.api.compressor and registers itself under:

  • Enum registry: CompressionFormat.ZSTD
  • String registry: formatId "zstd" with provider name "lib-zstd"

The implementation uses libzstd's streaming API (ZSTD_compressStream2 / ZSTD_decompressStream) for true incremental compression and decompression.

Provider name convention: vendor "lib", toString() returns "lib-zstd".

Module Initializers 1

shared static this()

Types 2

ZSTD compressor that implements ddn.api.compressor.Compressor using libzstd's streaming API (ZSTD_compressStream2).

Fields
private CompressionOptions _opts
private OutputSink _sink
private bool _finished
private ZSTD_CCtx _cctx
private ubyte[] _outBuf
private ulong _bytesIn
private ulong _bytesOut
Methods
CompressionOptions options() @property constReturn the options used to create this compressor.
void setOutputSink(OutputSink sink)Set the output sink delegate.
void setProgressCallback(ProgressCallback callback)Set the progress callback.
ulong bytesInTotal() @property constTotal uncompressed bytes consumed.
ulong bytesOutTotal() @property constTotal compressed bytes produced.
void write(const(ubyte)[] data)Feed uncompressed data into the stream.
void flush(FlushMode mode = FlushMode.SYNC)Flush pending output.
void finish()Finalize the stream.
void reset()Reset the compression context for reuse.
bool setDictionary(const(ubyte)[] dict)Set a compression dictionary.
bool isFinished() @property constReturns true if finish() has been called.
Constructors
this(CompressionOptions opts)Create a compressor with provided options.
Destructors
~thisRelease the ZSTD context.

ZSTD decompressor that implements ddn.api.compressor.Decompressor using libzstd's streaming API (ZSTD_decompressStream).

Fields
private DecompressionOptions _opts
private OutputSink _sink
private bool _finished
private ZSTD_DCtx _dctx
private ubyte[] _outBuf
private ulong _bytesIn
private ulong _bytesOut
private bool _frameComplete
Methods
DecompressionOptions options() @property constReturn the options used to create this decompressor.
void setOutputSink(OutputSink sink)Set the output sink delegate.
void setProgressCallback(ProgressCallback callback)Set the progress callback.
ulong bytesInTotal() @property constTotal compressed bytes consumed.
ulong bytesOutTotal() @property constTotal decompressed bytes produced.
void write(const(ubyte)[] data)Feed compressed data into the stream.
void finish()Finalize the stream.
void reset()Reset the decompression context for reuse.
bool setDictionary(const(ubyte)[] dict)Provide a dictionary if required.
bool isFinished() @property constReturns true if finish() has been called.
Constructors
this(DecompressionOptions opts)Create a decompressor with provided options.
Destructors
~thisRelease the ZSTD context.

Functions 6

private fnint toZstdLevel(CompressionOptions opts)Map `CompressionLevel` / numericLevel to zstd compression level.
private fnint toZstdStrategy(CompressionStrategy strategy)Map `CompressionStrategy` to zstd strategy constant.
private fnint toZstdChecksum(ChecksumType cs)Map `ChecksumType` to zstd checksum flag (0 = disabled, 1 = enabled).
private fnvoid throwZstdError(size_t rc, string context)Convert `CompressionError` from a ZSTD return code.
fnCompressor makeZstdCompressor(CompressionOptions opts)Factory function that constructs a `ZstdCompressor`.
fnDecompressor makeZstdDecompressor(DecompressionOptions opts)Factory function that constructs a `ZstdDecompressor`.