bucket_info.set_sync_policy(std::move(new_policy));
}
- policy = (rgw_sync_policy_info *)bucket_info.sync_policy.get();
+ policy = &(*bucket_info.sync_policy);
return 0;
}
decode(obj_lock, bl);
}
if (struct_v >= 21) {
- bool has_sync_policy;
- decode(has_sync_policy, bl);
- if (has_sync_policy) {
- auto policy = make_shared<rgw_sync_policy_info>();
- decode(*policy, bl);
- sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(policy);
- } else {
- sync_policy.reset();
- }
+ decode(sync_policy, bl);
}
DECODE_FINISH(bl);
void RGWBucketInfo::set_sync_policy(rgw_sync_policy_info&& policy)
{
- auto shared_policy = make_shared<rgw_sync_policy_info>(policy);
- sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(shared_policy);
+ sync_policy = std::move(policy);
}
bool RGWBucketInfo::empty_sync_policy() const
#include "rgw_website.h"
#include "rgw_object_lock.h"
#include "rgw_tag.h"
+#include "rgw_sync_policy.h"
#include "cls/version/cls_version_types.h"
#include "cls/user/cls_user_types.h"
#include "cls/rgw/cls_rgw_types.h"
}
}
-struct rgw_sync_policy_info;
class RGWSI_Zone;
struct RGWBucketInfo {
RGWObjectLock obj_lock;
- std::shared_ptr<const rgw_sync_policy_info> sync_policy;
+ std::optional<rgw_sync_policy_info> sync_policy;
void encode(bufferlist& bl) const;
void decode(bufferlist::const_iterator& bl);
#pragma once
-#include "rgw_common.h"
+#include "rgw_basic_types.h"
struct rgw_sync_symmetric_group {
&ci, refresh_version, y);
*info = e.info;
- if (info->sync_policy) { /* fork policy off cache */
- auto policy = make_shared<rgw_sync_policy_info>(*info->sync_policy);
- info->sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(policy);
- }
-
if (ret < 0) {
if (ret != -ENOENT) {
lderr(cct) << "ERROR: do_read_bucket_instance_info failed: " << ret << dendl;