class DBZone : public StoreZone {
protected:
DBStore* store;
- RGWRealm *realm{nullptr};
- DBZoneGroup *zonegroup{nullptr};
- RGWZone *zone_public_config{nullptr}; /* external zone params, e.g., entrypoints, log flags, etc. */
- RGWZoneParams *zone_params{nullptr}; /* internal zone params, e.g., rados pools */
- RGWPeriod *current_period{nullptr};
+ std::unique_ptr<RGWRealm> realm;
+ std::unique_ptr<DBZoneGroup> zonegroup;
+ std::unique_ptr<RGWZone> zone_public_config; /* external zone params, e.g., entrypoints, log flags, etc. */
+ std::unique_ptr<RGWZoneParams> zone_params; /* internal zone params, e.g., rados pools */
+ std::unique_ptr<RGWPeriod> current_period;
public:
DBZone(DBStore* _store) : store(_store) {
- realm = new RGWRealm();
+ realm = std::make_unique<RGWRealm>();
std::unique_ptr<RGWZoneGroup> rzg = std::make_unique<RGWZoneGroup>("default", "default");
rzg->api_name = "default";
rzg->is_master = true;
- zonegroup = new DBZoneGroup(store, std::move(rzg));
- zone_public_config = new RGWZone();
- zone_params = new RGWZoneParams();
- current_period = new RGWPeriod();
+ zonegroup = std::make_unique<DBZoneGroup>(store, std::move(rzg));
+ zone_public_config = std::make_unique<RGWZone>();
+ zone_params = std::make_unique<RGWZoneParams>();
+ current_period = std::make_unique<RGWPeriod>();
// XXX: only default and STANDARD supported for now
RGWZonePlacementInfo info;
info.storage_classes = sc;
zone_params->placement_pools["default"] = info;
}
- ~DBZone() {
- delete realm;
- delete zonegroup;
- delete zone_public_config;
- delete zone_params;
- delete current_period;
- }
+ ~DBZone() = default;
virtual std::unique_ptr<Zone> clone() override {
return std::make_unique<DBZone>(store);