|
KEEL 1.0.0
Minimal C11 HTTP client/server library built on epoll/kqueue/io_uring/poll
|


Go to the source code of this file.
Data Structures | |
| struct | KlDecompress |
| struct | KlDecompressConfig |
| Decompression configuration. More... | |
| struct | KlDecompressStream |
| Decompression stream handle. More... | |
Typedefs | |
| typedef struct KlDecompress | KlDecompress |
| Pluggable decompression vtable. | |
| typedef KlDecompress *(* | KlDecompressFactory) (KlCompressCtx *ctx, KlAllocator *alloc) |
| Factory creates a KlDecompress session from the shared context. | |
| typedef struct KlDecompressConfig | KlDecompressConfig |
| Decompression configuration. | |
Functions | |
| int | kl_decompress_body (KlDecompressConfig *cfg, const char *in, size_t in_len, char **out, size_t *out_len, KlAllocator *alloc) |
| Decompress a buffer body in one shot. | |
| int | kl_decompress_stream_init (KlDecompressStream *ds, KlDecompressConfig *cfg, KlAllocator *alloc) |
| Initialize a decompression stream. | |
| int | kl_decompress_stream_feed (KlDecompressStream *ds, const char *data, size_t len, int flush, int(*emit)(void *ctx, const char *data, size_t len), void *emit_ctx) |
| Feed compressed data through the decompression stream. | |
| void | kl_decompress_stream_free (KlDecompressStream *ds) |
| Free decompression stream resources. | |
| typedef struct KlDecompress KlDecompress |
Pluggable decompression vtable.
Users implement this interface to provide decompression (gzip, deflate, zstd). One KlDecompress instance is created per decompress operation via the factory.
| typedef KlDecompress *(* KlDecompressFactory) (KlCompressCtx *ctx, KlAllocator *alloc) |
Factory creates a KlDecompress session from the shared context.
Shares KlCompressCtx with compression — same algorithm configuration.
| ctx | Shared compression context (algorithm, level). |
| alloc | Allocator for session resources. |
| typedef struct KlDecompressConfig KlDecompressConfig |
Decompression configuration.
Shares KlCompressCtx with KlCompressConfig for algorithm configuration.
| int kl_decompress_body | ( | KlDecompressConfig * | cfg, |
| const char * | in, | ||
| size_t | in_len, | ||
| char ** | out, | ||
| size_t * | out_len, | ||
| KlAllocator * | alloc | ||
| ) |
Decompress a buffer body in one shot.
Creates a decompression session, decompresses data, destroys session. Caller owns *out and must kl_free(alloc, *out, *out_len).
| cfg | Decompression config (factory + context). |
| in | Compressed input data. |
| in_len | Input length. |
| out | Receives allocated decompressed output. |
| out_len | Receives decompressed output length. |
| alloc | Allocator for output buffer. |
| int kl_decompress_stream_init | ( | KlDecompressStream * | ds, |
| KlDecompressConfig * | cfg, | ||
| KlAllocator * | alloc | ||
| ) |
Initialize a decompression stream.
Creates a decompression session via the factory and stores it in the stream handle.
| ds | Decompression stream handle (caller-owned). |
| cfg | Decompression config. |
| alloc | Allocator for session resources. |
| int kl_decompress_stream_feed | ( | KlDecompressStream * | ds, |
| const char * | data, | ||
| size_t | len, | ||
| int | flush, | ||
| int(*)(void *ctx, const char *data, size_t len) | emit, | ||
| void * | emit_ctx | ||
| ) |
Feed compressed data through the decompression stream.
| ds | Decompression stream handle. |
| data | Compressed data. |
| len | Data length. |
| flush | 0 for intermediate, 1 for final. |
| emit | Callback to receive decompressed output. |
| emit_ctx | Context passed to emit callback. |
| void kl_decompress_stream_free | ( | KlDecompressStream * | ds | ) |
Free decompression stream resources.
Destroys the decompression session. Safe to call multiple times.
| ds | Decompression stream handle. |