partition_info.name = "d4n";
partition_info.type = "read-cache";
partition_info.size = g_conf()->rgw_d4n_l1_datacache_size;
- cacheDriver = new rgw::cache::SSDDriver(partition_info);
+ cacheDriver = std::make_unique<rgw::cache::SSDDriver>(partition_info);
}
D4NFilterDriver::~D4NFilterDriver() = default;
using boost::redis::config;
conn = std::make_shared<connection>(boost::asio::make_strand(io_context));
- objDir = new rgw::d4n::ObjectDirectory(conn);
- blockDir = new rgw::d4n::BlockDirectory(conn);
- policyDriver = new rgw::d4n::PolicyDriver(conn, cacheDriver, "lfuda");
+ objDir = std::make_unique<rgw::d4n::ObjectDirectory>(conn);
+ blockDir = std::make_unique<rgw::d4n::BlockDirectory>(conn);
+ policyDriver = std::make_unique<rgw::d4n::PolicyDriver>(conn,
+ cacheDriver.get(),
+ "lfuda");
std::string address = cct->_conf->rgw_d4n_address;
config cfg;
// call cancel() on the connection's executor
boost::asio::dispatch(conn->get_executor(), [c = conn] { c->cancel(); });
- delete cacheDriver;
- delete objDir;
- delete blockDir;
- delete policyDriver;
+ cacheDriver.reset();
+ objDir.reset();
+ blockDir.reset();
+ policyDriver.reset();
next->shutdown();
}
class D4NFilterDriver : public FilterDriver {
private:
std::shared_ptr<connection> conn;
- rgw::cache::CacheDriver* cacheDriver;
- rgw::d4n::ObjectDirectory* objDir;
- rgw::d4n::BlockDirectory* blockDir;
- rgw::d4n::PolicyDriver* policyDriver;
+ std::unique_ptr<rgw::cache::CacheDriver> cacheDriver;
+ std::unique_ptr<rgw::d4n::ObjectDirectory> objDir;
+ std::unique_ptr<rgw::d4n::BlockDirectory> blockDir;
+ std::unique_ptr<rgw::d4n::PolicyDriver> policyDriver;
boost::asio::io_context& io_context;
public:
const rgw_placement_rule *ptail_placement_rule,
uint64_t olh_epoch,
const std::string& unique_tag) override;
- rgw::cache::CacheDriver* get_cache_driver() { return cacheDriver; }
- rgw::d4n::ObjectDirectory* get_obj_dir() { return objDir; }
- rgw::d4n::BlockDirectory* get_block_dir() { return blockDir; }
- rgw::d4n::PolicyDriver* get_policy_driver() { return policyDriver; }
+ rgw::cache::CacheDriver* get_cache_driver() { return cacheDriver.get(); }
+
+
+ rgw::d4n::ObjectDirectory* get_obj_dir() { return objDir.get(); }
+ rgw::d4n::BlockDirectory* get_block_dir() { return blockDir.get(); }
+ rgw::d4n::PolicyDriver* get_policy_driver() { return policyDriver.get(); }
void shutdown() override;
};