From 4887f3789817f87bf1272af0b52684e3364270c2 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 8 Mar 2023 11:35:54 +1100 Subject: add leveldb --- src/database/database.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/database/database.cpp (limited to 'src/database/database.cpp') diff --git a/src/database/database.cpp b/src/database/database.cpp new file mode 100644 index 00000000..7cfd0581 --- /dev/null +++ b/src/database/database.cpp @@ -0,0 +1,38 @@ +#include "database.hpp" + +#include "esp_log.h" +#include "leveldb/cache.h" + +#include "env_esp.hpp" + +namespace database { + +static SingletonEnv sEnv; + +auto Database::Open() -> cpp::result { + leveldb::DB* db; + leveldb::Cache* cache = leveldb::NewLRUCache(24 * 1024); + leveldb::Options options; + options.env = sEnv.env(); + options.create_if_missing = true; + options.write_buffer_size = 48 * 1024; + options.max_file_size = 32; + options.block_cache = cache; + options.block_size = 512; + + auto status = leveldb::DB::Open(options, "/.db", &db); + if (!status.ok()) { + delete cache; + ESP_LOGE("DB", "failed to open db"); + return cpp::fail(FAILED_TO_OPEN); + } + + return new Database(db, cache); +} + +Database::Database(leveldb::DB* db, leveldb::Cache* cache) + : db_(db), cache_(cache) {} + +Database::~Database() {} + +} // namespace database -- cgit v1.2.3