int RadosObject::read_attrs(const DoutPrefixProvider* dpp, RGWRados::Object::Read &read_op, optional_yield y, rgw_obj* target_obj)
{
- read_op.params.attrs = &attrs;
+ read_op.params.attrs = &state.attrset;
read_op.params.target_obj = target_obj;
read_op.params.obj_size = &state.size;
read_op.params.lastmod = &state.mtime;
/* Temporarily set target */
state.obj = target;
set_atomic();
- attrs[attr_name] = attr_val;
- r = set_obj_attrs(dpp, &attrs, nullptr, y);
+ state.attrset[attr_name] = attr_val;
+ r = set_obj_attrs(dpp, &state.attrset, nullptr, y);
/* Restore target */
state.obj = save;
}
bool RadosObject::is_expired() {
- auto iter = attrs.find(RGW_ATTR_DELETE_AT);
- if (iter != attrs.end()) {
- utime_t delete_at;
- try {
- auto bufit = iter->second.cbegin();
- decode(delete_at, bufit);
- } catch (buffer::error& err) {
- ldout(store->ctx(), 0) << "ERROR: " << __func__ << ": failed to decode " RGW_ATTR_DELETE_AT " attr" << dendl;
- return false;
- }
-
- if (delete_at <= ceph_clock_now() && !delete_at.is_zero()) {
- return true;
- }
+ auto iter = state.attrset.find(RGW_ATTR_DELETE_AT);
+ if (iter == state.attrset.end()) {
+ return false;
+ }
+ utime_t delete_at;
+ try {
+ auto bufit = iter->second.cbegin();
+ decode(delete_at, bufit);
+ } catch (buffer::error& err) {
+ ldout(store->ctx(), 0) << "ERROR: " << __func__ << ": failed to decode " RGW_ATTR_DELETE_AT " attr" << dendl;
+ return false;
}
- return false;
+ return delete_at <= ceph_clock_now() && !delete_at.is_zero();
}
void RadosObject::gen_rand_obj_instance_name()
int DBObject::read_attrs(const DoutPrefixProvider* dpp, DB::Object::Read &read_op, optional_yield y, rgw_obj* target_obj)
{
- read_op.params.attrs = &attrs;
+ read_op.params.attrs = &state.attrset;
read_op.params.target_obj = target_obj;
read_op.params.obj_size = &state.size;
read_op.params.lastmod = &state.mtime;
return r;
}
set_atomic();
- attrs[attr_name] = attr_val;
- return set_obj_attrs(dpp, &attrs, nullptr, y);
+ state.attrset[attr_name] = attr_val;
+ return set_obj_attrs(dpp, &state.attrset, nullptr, y);
}
int DBObject::delete_obj_attrs(const DoutPrefixProvider* dpp, const char* attr_name, optional_yield y)
class StoreObject : public Object {
protected:
RGWObjState state;
- Bucket* bucket;
- Attrs attrs;
+ Bucket* bucket = nullptr;
bool delete_marker{false};
public:
-
- struct StoreReadOp : ReadOp {
- virtual ~StoreReadOp() = default;
- };
-
- struct StoreDeleteOp : DeleteOp {
- virtual ~StoreDeleteOp() = default;
- };
-
- StoreObject()
- : state(),
- bucket(nullptr),
- attrs()
- {}
+ StoreObject() = default;
StoreObject(const rgw_obj_key& _k)
- : state(),
- bucket(),
- attrs()
- { state.obj.key = _k; }
+ { state.obj.key = _k; }
StoreObject(const rgw_obj_key& _k, Bucket* _b)
- : state(),
- bucket(_b),
- attrs()
- { state.obj.init(_b->get_key(), _k); }
- StoreObject(StoreObject& _o) = default;
+ : bucket(_b)
+ { state.obj.init(_b->get_key(), _k); }
+ StoreObject(const StoreObject& _o) = default;
virtual ~StoreObject() = default;