// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- // vim: ts=8 sw=2 smarttab ft=cpp #pragma once #include #include "rgw_xml.h" #include "rgw_obj_types.h" #include "rgw_obj_manifest.h" #include "rgw_compression_types.h" #include "common/dout.h" #include "rgw_sal_fwd.h" #define MULTIPART_UPLOAD_ID_PREFIX_LEGACY "2/" #define MULTIPART_UPLOAD_ID_PREFIX "2~" // must contain a unique char that may not come up in gen_rand_alpha() class RGWMultiCompleteUpload : public XMLObj { public: RGWMultiCompleteUpload() {} ~RGWMultiCompleteUpload() override {} bool xml_end(const char *el) override; std::map parts; }; class RGWMultiPart : public XMLObj { std::string etag; int num; public: RGWMultiPart() : num(0) {} ~RGWMultiPart() override {} bool xml_end(const char *el) override; std::string& get_etag() { return etag; } int get_num() { return num; } }; class RGWMultiPartNumber : public XMLObj { public: RGWMultiPartNumber() {} ~RGWMultiPartNumber() override {} }; class RGWMultiETag : public XMLObj { public: RGWMultiETag() {} ~RGWMultiETag() override {} }; class RGWMultiXMLParser : public RGWXMLParser { XMLObj *alloc_obj(const char *el) override; public: RGWMultiXMLParser() {} virtual ~RGWMultiXMLParser() override; }; extern bool is_v2_upload_id(const std::string& upload_id);