Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarZSTDCompression.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/StarZSTDCompression.hpp')
-rw-r--r--source/core/StarZSTDCompression.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/source/core/StarZSTDCompression.hpp b/source/core/StarZSTDCompression.hpp
new file mode 100644
index 0000000..77719bf
--- /dev/null
+++ b/source/core/StarZSTDCompression.hpp
@@ -0,0 +1,44 @@
+#pragma once
+#include "StarByteArray.hpp"
+#include "StarDataStreamDevices.hpp"
+
+typedef struct ZSTD_CCtx_s ZSTD_CCtx;
+typedef struct ZSTD_DCtx_s ZSTD_DCtx;
+typedef ZSTD_DCtx ZSTD_DStream;
+typedef ZSTD_CCtx ZSTD_CStream;
+
+namespace Star {
+
+class CompressionStream {
+public:
+ CompressionStream();
+ ~CompressionStream();
+
+ ByteArray compress(const char* in, size_t inLen);
+ ByteArray compress(ByteArray const& in);
+
+private:
+ ZSTD_CStream* m_cStream;
+};
+
+inline ByteArray CompressionStream::compress(ByteArray const& in) {
+ return compress(in.ptr(), in.size());
+}
+
+class DecompressionStream {
+public:
+ DecompressionStream();
+ ~DecompressionStream();
+
+ ByteArray decompress(const char* in, size_t inLen);
+ ByteArray decompress(ByteArray const& in);
+
+private:
+ ZSTD_DStream* m_dStream;
+};
+
+inline ByteArray DecompressionStream::decompress(ByteArray const& in) {
+ return decompress(in.ptr(), in.size());
+}
+
+} \ No newline at end of file