return Device::make_device(
device
).then([&device](DeviceRef device_obj) {
- auto tm = make_transaction_manager(false /* detailed */);
+ tm_make_config_t config {false, false};
+ auto tm = make_transaction_manager(config);
auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
return std::make_unique<SeaStore>(
device,
TransactionManager::~TransactionManager() {}
-TransactionManagerRef make_transaction_manager(bool detailed, bool cbjournal)
+TransactionManagerRef make_transaction_manager(tm_make_config_t config)
{
auto epm = std::make_unique<ExtentPlacementManager>();
auto cache = std::make_unique<Cache>(*epm);
std::move(sms),
*backref_manager,
*cache,
- detailed);
+ config.detailed);
JournalRef journal;
- if (!cbjournal) {
+ if (!config.cbjournal) {
journal = journal::make_segmented(*segment_cleaner);
} else {
journal = journal::make_circularbounded(
};
using TransactionManagerRef = std::unique_ptr<TransactionManager>;
-TransactionManagerRef make_transaction_manager(bool detailed, bool cbjournal = false);
+struct tm_make_config_t {
+ bool detailed = true;
+ bool cbjournal = false;
+ static tm_make_config_t get_default() {
+ return tm_make_config_t {
+ true,
+ false
+ };
+ }
+};
+TransactionManagerRef make_transaction_manager(tm_make_config_t config);
}
void TMDriver::init()
{
- tm = make_transaction_manager(false /* detailed */);
+ tm_make_config_t config {false, false};
+ tm = make_transaction_manager(config);
tm->add_device(device.get(), true);
}
};
auto get_seastore(SeaStore::MDStoreRef mdstore, SegmentManagerRef sm) {
- auto tm = make_transaction_manager(true);
+ auto tm = make_transaction_manager(tm_make_config_t::get_default());
auto cm = std::make_unique<collection_manager::FlatCollectionManager>(*tm);
return std::make_unique<SeaStore>(
"",
TMTestState(std::size_t num_devices) : EphemeralTestState(num_devices) {}
virtual void _init() override {
- tm = make_transaction_manager(true,
- j_type == journal_type::SEGMENT_JOURNAL ? false : true);
+ tm_make_config_t config;
+ config.cbjournal = j_type == journal_type::SEGMENT_JOURNAL ? false : true;
+ tm = make_transaction_manager(config);
tm->add_device(segment_manager.get(), true);
if (j_type == journal_type::CIRCULARBOUNDED_JOURNAL) {
tm->add_device(rb_device.get(), false);