2025-01-30 18:10:38 +00:00
|
|
|
#include "pipeline.h"
|
|
|
|
|
|
|
|
|
|
#include <zstd.h>
|
|
|
|
|
|
|
|
|
|
static enum ec3_status compress(
|
|
|
|
|
struct ec3_pipeline_stage *stage,
|
|
|
|
|
const void *src,
|
|
|
|
|
size_t len,
|
|
|
|
|
void *dest,
|
2025-02-15 12:36:37 +00:00
|
|
|
size_t dest_max,
|
2025-01-30 18:10:38 +00:00
|
|
|
size_t *nr_written)
|
|
|
|
|
{
|
2025-02-15 12:36:37 +00:00
|
|
|
*nr_written = ZSTD_compress(dest, dest_max, src, len, 10);
|
2025-01-30 18:10:38 +00:00
|
|
|
return EC3_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static enum ec3_status decompress(
|
|
|
|
|
struct ec3_pipeline_stage *stage,
|
|
|
|
|
const void *src,
|
2025-02-15 12:36:37 +00:00
|
|
|
size_t len,
|
2025-01-30 18:10:38 +00:00
|
|
|
void *dest,
|
2025-02-15 12:36:37 +00:00
|
|
|
size_t dest_max,
|
2025-01-30 18:10:38 +00:00
|
|
|
size_t *nr_read)
|
|
|
|
|
{
|
2025-02-15 12:36:37 +00:00
|
|
|
*nr_read = ZSTD_decompress(dest, dest_max, src, len);
|
2025-01-30 18:10:38 +00:00
|
|
|
return EC3_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const struct ec3_pipeline_stage_type pipeline_zstd = {
|
|
|
|
|
.t_id = EC3_PIPELINE_ZSTD,
|
|
|
|
|
.t_flags = EC3_PIPELINE_F_BUFFERED,
|
2025-02-15 12:36:37 +00:00
|
|
|
.t_cluster_in = decompress,
|
|
|
|
|
.t_cluster_out = compress,
|
2025-01-30 18:10:38 +00:00
|
|
|
};
|