void process_end_of_MPU_part();
public:
- RGWPutObj_ETagVerifier_MPU(CephContext* cct_, rgw::putobj::DataProcessor *next)
- : RGWPutObj_ETagVerifier(cct_, next) {}
+ RGWPutObj_ETagVerifier_MPU(CephContext* cct,
+ std::vector<uint64_t> part_ofs,
+ rgw::putobj::DataProcessor *next)
+ : RGWPutObj_ETagVerifier(cct, next),
+ part_ofs(std::move(part_ofs))
+ {}
int process(bufferlist&& data, uint64_t logical_offset) override;
void calculate_etag() override;
- void append_part_ofs(uint64_t ofs) { part_ofs.emplace_back(ofs); }
}; /* RGWPutObj_ETagVerifier_MPU */
etag_verifier_atomic = boost::in_place(cct, filter);
filter = &*etag_verifier_atomic;
} else {
- obj_type = OBJ_TYPE_MPU;
- etag_verifier_mpu = boost::in_place(cct, filter);
uint64_t cur_part_ofs = UINT64_MAX;
+ std::vector<uint64_t> part_ofs;
/*
* We must store the offset of each part to calculate the ETAGs for each
continue;
cur_part_ofs = mi.get_part_ofs();
ldout(cct, 20) << "MPU Part offset:" << cur_part_ofs << dendl;
- etag_verifier_mpu->append_part_ofs(cur_part_ofs);
+ part_ofs.push_back(cur_part_ofs);
}
+
+ obj_type = OBJ_TYPE_MPU;
+ etag_verifier_mpu = boost::in_place(cct, std::move(part_ofs), filter);
filter = &*etag_verifier_mpu;
}
}