X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Frgw%2Frgw_tag.h;fp=src%2Fceph%2Fsrc%2Frgw%2Frgw_tag.h;h=f5d787ae9b2546a3d92a36ab07750a000bb81977;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/rgw/rgw_tag.h b/src/ceph/src/rgw/rgw_tag.h new file mode 100644 index 0000000..f5d787a --- /dev/null +++ b/src/ceph/src/rgw/rgw_tag.h @@ -0,0 +1,40 @@ +#ifndef RGW_TAG_H +#define RGW_TAG_H + +#include +#include +#include + +#include "rgw_common.h" + +class RGWObjTags +{ + protected: + using tag_map_t = boost::container::flat_map ; + tag_map_t tag_map; + public: + RGWObjTags() {} + ~RGWObjTags() {} + + void encode(bufferlist& bl) const { + ENCODE_START(1,1,bl); + ::encode(tag_map, bl); + ENCODE_FINISH(bl); + } + + void decode(bufferlist::iterator &bl) { + DECODE_START_LEGACY_COMPAT_LEN(1, 1, 1, bl); + ::decode(tag_map,bl); + DECODE_FINISH(bl); + } + + void dump(Formatter *f) const; + bool add_tag(const std::string& key, const std::string& val=""); + int check_and_add_tag(const std::string& key, const std::string& val=""); + size_t count() const {return tag_map.size();} + int set_from_string(const std::string& input); + const tag_map_t& get_tags() const {return tag_map;} +}; +WRITE_CLASS_ENCODER(RGWObjTags) + +#endif /* RGW_TAG_H */