diff options
Diffstat (limited to '')
-rw-r--r-- | src/rgw/rgw_zone_features.h | 47 |
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 |