diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-14 21:41:53 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-03-14 21:41:53 +1100 |
commit | 662b83ff92cc2316fb962ff1608359f6d705a5f0 (patch) | |
tree | d0e7d15887ed14bd252e6e61888710c8bac2200a /source/core/StarZSTDCompression.hpp | |
parent | 8164e5ae6fa33c9ec2a14f107585a7cbe7fbf813 (diff) |
Initial commit of experimental zstd network compression
currently a bit buggy
Diffstat (limited to 'source/core/StarZSTDCompression.hpp')
-rw-r--r-- | source/core/StarZSTDCompression.hpp | 44 |
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 |