]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rgw/rgw_lc_s3.h
update sources to v12.1.0
[ceph.git] / ceph / src / rgw / rgw_lc_s3.h
index c969ac979c93cf6d859a28d61f76c0dd1a4b133e..53c5f7e8ba59eeaefc83d17f336a1f35c2a863c3 100644 (file)
@@ -6,16 +6,10 @@
 #include <iostream>
 #include <include/types.h>
 
-#include <expat.h>
-
 #include "include/str_list.h"
 #include "rgw_lc.h"
 #include "rgw_xml.h"
 
-
-
-using namespace std;
-
 class LCID_S3 : public XMLObj
 {
 public:
@@ -48,20 +42,50 @@ public:
   string& to_str() { return data; }
 };
 
+class LCDeleteMarker_S3 : public XMLObj
+{
+public:
+  LCDeleteMarker_S3() {}
+  ~LCDeleteMarker_S3() override {}
+  string& to_str() { return data; }
+};
+
 class LCExpiration_S3 : public LCExpiration, public XMLObj
 {
+private:
+  bool dm_expiration;
 public:
-  LCExpiration_S3() {}
+  LCExpiration_S3(): dm_expiration(false) {}
+  LCExpiration_S3(string _days, bool _dm_expiration) {
+    days = _days;
+    dm_expiration = _dm_expiration;
+  }
   ~LCExpiration_S3() override {}
 
   bool xml_end(const char *el) override;
   void to_xml(ostream& out) {
-    out << "<Expiration>" << "<Days>" << days << "</Days>"<< "</Expiration>";
+    if (dm_expiration) {
+      out << "<Expiration>" << "<ExpiredObjectDeleteMarker>" << "true" << "</ExpiredObjectDeleteMarker>" << "</Expiration>";
+    } else {
+      out << "<Expiration>" << "<Days>" << days << "</Days>"<< "</Expiration>";
+    }
   }
   void dump_xml(Formatter *f) const {
-         f->open_object_section("Expiration");
-         encode_xml("Days", days, f);
-         f->close_section(); // Expiration
+    f->open_object_section("Expiration");
+    if (dm_expiration) {
+      encode_xml("ExpiredObjectDeleteMarker", "true", f);
+    } else {
+      encode_xml("Days", days, f);
+    }
+    f->close_section(); // Expiration
+  }
+
+  void set_dm_expiration(bool _dm_expiration) {
+    dm_expiration = _dm_expiration;
+  }
+
+  bool get_dm_expiration() {
+    return dm_expiration;
   }
 };
 
@@ -113,8 +137,8 @@ public:
     encode_xml("ID", id, f);
     encode_xml("Prefix", prefix, f);
     encode_xml("Status", status, f);
-    if (!expiration.empty()) {
-      const LCExpiration_S3& expir = static_cast<const LCExpiration_S3&>(expiration);
+    if (!expiration.empty() || dm_expiration) {
+      LCExpiration_S3 expir(expiration.get_days_str(), dm_expiration);
       expir.dump_xml(f);
     }
     if (!noncur_expiration.empty()) {