diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-03-08 11:35:54 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-03-08 11:35:54 +1100 |
| commit | 4887f3789817f87bf1272af0b52684e3364270c2 (patch) | |
| tree | 945eb707ab4a0f6f0a6632dbb732dcc2ee2b39a8 /src/database/database.cpp | |
| parent | d01f1bee1082840fdf50aa7ddd36dbcbff286d7e (diff) | |
| download | tangara-fw-4887f3789817f87bf1272af0b52684e3364270c2.tar.gz | |
add leveldb
Diffstat (limited to 'src/database/database.cpp')
| -rw-r--r-- | src/database/database.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
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<leveldb::EspEnv> sEnv; + +auto Database::Open() -> cpp::result<Database*, DatabaseError> { + 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 |
