diff options
author | Ebus-at-dockstar <ebus@dockstar> | 2014-07-25 22:13:55 +0200 |
---|---|---|
committer | Ebus-at-dockstar <ebus@dockstar> | 2014-07-25 22:13:55 +0200 |
commit | f6675ccdd7a5997def3c4656f0e2c5dbbbed1fc8 (patch) | |
tree | 893a37289de684b95a6184c528e5c9c8547e7197 /datastore-leveldb/src/db.cpp | |
parent | cfb0c10631bbbd31b525e7992b59de06d3c2e550 (diff) | |
download | ebus-alt-f6675ccdd7a5997def3c4656f0e2c5dbbbed1fc8.tar.gz ebus-alt-f6675ccdd7a5997def3c4656f0e2c5dbbbed1fc8.zip |
embed xexpr-path
Diffstat (limited to 'datastore-leveldb/src/db.cpp')
-rw-r--r-- | datastore-leveldb/src/db.cpp | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/datastore-leveldb/src/db.cpp b/datastore-leveldb/src/db.cpp deleted file mode 100644 index 991a82e..0000000 --- a/datastore-leveldb/src/db.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "db.h" - -#include <iomanip> -#include <iostream> -#include <mutex> -#include <unordered_map> -#include <sstream> - -static std::unordered_map<std::string,leveldb::DB*> dbs; -static std::mutex getDBmutex; - -static bool sensor_name_is_sane(std::string& name) { - for (auto it = name.begin(); it != name.end(); ++it) { - if (not ((*it >= '0' and *it <= '9') or - (*it >= 'A' and *it <= 'Z') or - (*it >= 'a' and *it <= 'z') or - (*it == '.'))) { - return false; - } - } - return true; -} - -std::string db_make_key(const uint64_t timestamp) { - std::stringstream key; - key << "ts-"; - key << std::setfill('0') << std::setw(20) << timestamp; - return key.str(); -} - -leveldb::DB *db_get(std::string& name) { - getDBmutex.lock(); - if (dbs.find(name) == dbs.end()) { - if (not sensor_name_is_sane(name)) { - getDBmutex.unlock(); - return nullptr; - } - leveldb::DB *db; - leveldb::Options options; - options.create_if_missing = true; - leveldb::Status status = leveldb::DB::Open(options, "data/"+name, &db); - if (not status.ok()) { - std::cout << status.ToString() << std::endl; - getDBmutex.unlock(); - return nullptr; - } - dbs[name] = db; - getDBmutex.unlock(); - return db; - } else { - getDBmutex.unlock(); - return dbs.at(name); - } -} - - -bool db_insert(std::string& name, const uint64_t timestamp, std::string& value) { - leveldb::DB *db = db_get(name); - if (db == nullptr) return false; - - auto status = db->Put(leveldb::WriteOptions(), db_make_key(timestamp), value); - return status.ok(); -} - -void db_close() { - auto it = dbs.begin(); - while (it != dbs.end()) { - std::cout << "Close Database: " << (*it).first << std::endl; - delete (*it).second; - dbs.erase(it++); //post increment! - } - std::cout << std::endl; -} - |