off_t end; /**< stream offset of last byte that is requested */
bufferlist cache; /**< stores extra data that could not (yet) be processed by BlockCrypt */
size_t block_size; /**< snapshot of \ref BlockCrypt.get_block_size() */
+ std::vector<size_t> parts_len; /**< size of parts of multipart object, parsed from manifest */
int process(bufferlist& cipher, size_t part_ofs, size_t size);
-protected:
- std::vector<size_t> parts_len; /**< size of parts of multipart object, parsed from manifest */
public:
RGWGetObj_BlockDecrypt(const DoutPrefixProvider *dpp,
CephContext* cct,
RGWGetObj_Filter* next,
- std::unique_ptr<BlockCrypt> crypt);
+ std::unique_ptr<BlockCrypt> crypt,
+ std::vector<size_t> parts_len);
virtual ~RGWGetObj_BlockDecrypt();
virtual int fixup_range(off_t& bl_ofs,
off_t bl_len) override;
virtual int flush() override;
- int read_manifest(const DoutPrefixProvider *dpp, bufferlist& manifest_bl);
+ static int read_manifest_parts(const DoutPrefixProvider *dpp,
+ const bufferlist& manifest_bl,
+ std::vector<size_t>& parts_len);
}; /* RGWGetObj_BlockDecrypt */