Пример #1
0
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);
    }
}
Пример #2
0
    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);
    }