public:
ImageOptions();
ImageOptions(rbd_image_options_t opts);
+ ImageOptions(const ImageOptions &imgopts);
~ImageOptions();
int set(int optname, const std::string& optval);
*opts = static_cast<rbd_image_options_t>(opts_);
}
+ void image_options_copy(rbd_image_options_t* opts,
+ const ImageOptions &orig)
+ {
+ image_options_ref* opts_ = new image_options_ref(new image_options_t());
+
+ *opts = static_cast<rbd_image_options_t>(opts_);
+
+ std::string str_val;
+ uint64_t uint64_val;
+ for (auto &i : IMAGE_OPTIONS_TYPE_MAPPING) {
+ switch (i.second) {
+ case STR:
+ if (orig.get(i.first, &str_val) == 0) {
+ image_options_set(*opts, i.first, str_val);
+ }
+ continue;
+ case UINT64:
+ if (orig.get(i.first, &uint64_val) == 0) {
+ image_options_set(*opts, i.first, uint64_val);
+ }
+ continue;
+ }
+ }
+ }
+
void image_options_destroy(rbd_image_options_t opts)
{
image_options_ref* opts_ = static_cast<image_options_ref*>(opts);
void image_options_create(rbd_image_options_t* opts);
void image_options_create_ref(rbd_image_options_t* opts,
rbd_image_options_t orig);
+ void image_options_copy(rbd_image_options_t *opts,
+ const ImageOptions &orig);
void image_options_destroy(rbd_image_options_t opts);
int image_options_set(rbd_image_options_t opts, int optname,
const std::string& optval);
librbd::image_options_create_ref(&opts, opts_);
}
+ ImageOptions::ImageOptions(const ImageOptions &imgopts)
+ {
+ librbd::image_options_copy(&opts, imgopts);
+ }
+
ImageOptions::~ImageOptions()
{
librbd::image_options_destroy(opts);