AkumuliConnection::AkumuliConnection(const char *path, bool hugetlb, Durability durability, uint32_t compression_threshold, uint64_t window_width, uint64_t cache_size) : dbpath_(path) { aku_FineTuneParams params = {}; params.debug_mode = 0; params.durability = (uint32_t)durability; params.enable_huge_tlb = hugetlb ? 1u : 0u; params.logger = &db_logger; params.compression_threshold = compression_threshold; params.window_size = window_width; params.max_cache_size = cache_size; db_ = aku_open_database(dbpath_.c_str(), params); aku_Status status = aku_open_status(db_); if (status != AKU_SUCCESS) { std::stringstream fmt; fmt << "can't open database, error: `" << aku_error_message(status) << "`"; std::runtime_error err(fmt.str()); BOOST_THROW_EXCEPTION(err); } }
virtual void open() { if (db_ != nullptr) { std::logic_error err("Database allready opened"); BOOST_THROW_EXCEPTION(err); } aku_FineTuneParams params; params.durability = durability_; params.enable_huge_tlb = enable_huge_tlb_ ? 1 : 0; params.logger = &aku_console_logger; params.compression_threshold = compression_threshold_; params.window_size = sliding_window_size_; std::string path = get_db_file_path(); db_ = aku_open_database(path.c_str(), params); auto status = aku_open_status(db_); throw_on_error(status); }