summaryrefslogtreecommitdiffstats
path: root/src/rgw/rgw_zone_features.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/rgw/rgw_zone_features.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/rgw/rgw_zone_features.h b/src/rgw/rgw_zone_features.h
new file mode 100644
index 000000000..5e1a435d4
--- /dev/null
+++ b/src/rgw/rgw_zone_features.h
@@ -0,0 +1,47 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab ft=cpp
+
+/* N.B., this header defines fundamental serialized types. Do not
+ * include files which can only be compiled in radosgw or OSD
+ * contexts (e.g., rgw_sal.h, rgw_common.h) */
+
+#pragma once
+
+#include <string>
+#include <boost/container/flat_set.hpp>
+
+namespace rgw::zone_features {
+
+// zone feature names
+inline constexpr std::string_view resharding = "resharding";
+inline constexpr std::string_view compress_encrypted = "compress-encrypted";
+
+// static list of features supported by this release
+inline constexpr std::initializer_list<std::string_view> supported = {
+ resharding,
+ compress_encrypted,
+};
+
+inline constexpr bool supports(std::string_view feature) {
+ for (auto i : supported) {
+ if (feature.compare(i) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
+// static list of features enabled by default on new zonegroups
+inline constexpr std::initializer_list<std::string_view> enabled = {
+ resharding,
+};
+
+
+// enable string_view overloads for find() contains() etc
+struct feature_less : std::less<std::string_view> {
+ using is_transparent = std::true_type;
+};
+
+using set = boost::container::flat_set<std::string, feature_less>;
+
+} // namespace rgw::zone_features