From 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 20:24:20 +0200 Subject: Adding upstream version 14.2.21. Signed-off-by: Daniel Baumann --- src/rgw/rgw_compression.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/rgw/rgw_compression.h (limited to 'src/rgw/rgw_compression.h') diff --git a/src/rgw/rgw_compression.h b/src/rgw/rgw_compression.h new file mode 100644 index 00000000..67a1e0cc --- /dev/null +++ b/src/rgw/rgw_compression.h @@ -0,0 +1,60 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_RGW_COMPRESSION_H +#define CEPH_RGW_COMPRESSION_H + +#include + +#include "compressor/Compressor.h" +#include "rgw_putobj.h" +#include "rgw_op.h" + +int rgw_compression_info_from_attr(const bufferlist& attr, + bool& need_decompress, + RGWCompressionInfo& cs_info); +int rgw_compression_info_from_attrset(const map& attrs, + bool& need_decompress, + RGWCompressionInfo& cs_info); + +class RGWGetObj_Decompress : public RGWGetObj_Filter +{ + CephContext* cct; + CompressorRef compressor; + RGWCompressionInfo* cs_info; + bool partial_content; + vector::iterator first_block, last_block; + off_t q_ofs, q_len; + uint64_t cur_ofs; + bufferlist waiting; +public: + RGWGetObj_Decompress(CephContext* cct_, + RGWCompressionInfo* cs_info_, + bool partial_content_, + RGWGetObj_Filter* next); + ~RGWGetObj_Decompress() override {} + + int handle_data(bufferlist& bl, off_t bl_ofs, off_t bl_len) override; + int fixup_range(off_t& ofs, off_t& end) override; + +}; + +class RGWPutObj_Compress : public rgw::putobj::Pipe +{ + CephContext* cct; + bool compressed{false}; + CompressorRef compressor; + std::vector blocks; +public: + RGWPutObj_Compress(CephContext* cct_, CompressorRef compressor, + rgw::putobj::DataProcessor *next) + : Pipe(next), cct(cct_), compressor(compressor) {} + + int process(bufferlist&& data, uint64_t logical_offset) override; + + bool is_compressed() { return compressed; } + vector& get_compression_blocks() { return blocks; } + +}; /* RGWPutObj_Compress */ + +#endif /* CEPH_RGW_COMPRESSION_H */ -- cgit v1.2.3