diff options
Diffstat (limited to 'src/zencore/compress.cpp')
| -rw-r--r-- | src/zencore/compress.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/zencore/compress.cpp b/src/zencore/compress.cpp index c41bdac42..a8e8a79f4 100644 --- a/src/zencore/compress.cpp +++ b/src/zencore/compress.cpp @@ -193,15 +193,7 @@ class NoneEncoder final : public BaseEncoder public: [[nodiscard]] CompositeBuffer Compress(const CompositeBuffer& RawData, uint64_t /* BlockSize */) const final { - BufferHeader Header; - Header.Method = CompressionMethod::None; - Header.BlockCount = 1; - Header.TotalRawSize = RawData.GetSize(); - Header.TotalCompressedSize = Header.TotalRawSize + sizeof(BufferHeader); - Header.RawHash = BLAKE3::HashBuffer(RawData); - - UniqueBuffer HeaderData = UniqueBuffer::Alloc(sizeof(BufferHeader)); - Header.Write(HeaderData); + UniqueBuffer HeaderData = CompressedBuffer::CreateHeaderForNoneEncoder(RawData.GetSize(), BLAKE3::HashBuffer(RawData)); return CompositeBuffer(HeaderData.MoveToShared(), RawData.MakeOwned()); } }; @@ -1301,6 +1293,26 @@ CompressedBuffer::ValidateCompressedHeader(const IoBuffer& CompressedData, IoHas return detail::BufferHeader::IsValid(SharedBuffer(CompressedData), OutRawHash, OutRawSize); } +size_t +CompressedBuffer::GetHeaderSizeForNoneEncoder() +{ + return sizeof(detail::BufferHeader); +} + +UniqueBuffer +CompressedBuffer::CreateHeaderForNoneEncoder(uint64_t RawSize, const BLAKE3& RawHash) +{ + detail::BufferHeader Header; + Header.Method = detail::CompressionMethod::None; + Header.BlockCount = 1; + Header.TotalRawSize = RawSize; + Header.TotalCompressedSize = Header.TotalRawSize + sizeof(detail::BufferHeader); + Header.RawHash = RawHash; + UniqueBuffer HeaderData = UniqueBuffer::Alloc(sizeof(detail::BufferHeader)); + Header.Write(HeaderData); + return HeaderData; +} + uint64_t CompressedBuffer::DecodeRawSize() const { |