#pragma once #include #include #include #include class ZstdFileWriter { public: ZstdFileWriter(const std::string &filename, int compression_level); ~ZstdFileWriter(); void write(void* data, size_t size); inline void write(kj::ArrayPtr array) { write(array.begin(), array.size()); } private: void flushCache(bool last_chunk); size_t input_cache_capacity_ = 0; std::vector input_cache_; std::vector output_buffer_; ZSTD_CStream *cstream_; FILE* file_ = nullptr; };