diff options
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; -} - |