From 767312e2063f4e58af3de0f27aba52de49e14295 Mon Sep 17 00:00:00 2001 From: Aaron Seigo Date: Fri, 5 Dec 2014 09:17:46 +0100 Subject: major reorg that puts Storage (previously Database) into common there is now a top-level tests dir, and a compile time switch for lmdb vs kyotocabinet --- store/database.cpp | 164 ----------------------------------------------------- 1 file changed, 164 deletions(-) delete mode 100644 store/database.cpp (limited to 'store/database.cpp') diff --git a/store/database.cpp b/store/database.cpp deleted file mode 100644 index 542667a..0000000 --- a/store/database.cpp +++ /dev/null @@ -1,164 +0,0 @@ -#include "database.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -class Database::Private -{ -public: - Private(const QString &storageRoot, const QString &name); - ~Private(); - - kyotocabinet::TreeDB db; - bool dbOpen; - bool inTransaction; -}; - -Database::Private::Private(const QString &storageRoot, const QString &name) - : inTransaction(false) -{ - QDir dir; - dir.mkdir(storageRoot); - - //create file - dbOpen = db.open((storageRoot + "/" + name + ".kch").toStdString(), kyotocabinet::BasicDB::OWRITER | kyotocabinet::BasicDB::OCREATE); - if (!dbOpen) { - // TODO: handle error - } -} - -Database::Private::~Private() -{ - if (dbOpen && inTransaction) { - db.end_transaction(false); - } -} - -Database::Database(const QString &storageRoot, const QString &name) - : d(new Private(storageRoot, name)) -{ -} - -Database::~Database() -{ - delete d; -} - -bool Database::isInTransaction() const -{ - return d->inTransaction; -} - -bool Database::startTransaction(TransactionType type) -{ - if (!d->dbOpen) { - return false; - } - - if (d->inTransaction) { - return true; - } - - //TODO handle errors - d->inTransaction = d->db.begin_transaction(); - return d->inTransaction; -} - -bool Database::commitTransaction() -{ - if (!d->dbOpen) { - return false; - } - - if (!d->inTransaction) { - return false; - } - - bool success = d->db.end_transaction(true); - d->inTransaction = false; - return success; -} - -void Database::abortTransaction() -{ - if (!d->dbOpen || !d->inTransaction) { - return; - } - - d->db.end_transaction(false); - d->inTransaction = false; -} - -bool Database::write(const char *key, size_t keySize, const char *value, size_t valueSize) -{ - if (!d->dbOpen) { - return false; - } - - bool success = d->db.set(key, keySize, value, valueSize); - return success; -} - -bool Database::write(const std::string &sKey, const std::string &sValue) -{ - if (!d->dbOpen) { - return false; - } - - bool success = d->db.set(sKey, sValue); - return success; -} - -void Database::read(const std::string &sKey, const std::function &resultHandler) -{ - if (!d->dbOpen) { - return; - } - - std::string value; - if (d->db.get(sKey, &value)) { - resultHandler(value); - } -} - -void Database::read(const std::string &sKey, const std::function &resultHandler) -{ - if (!d->dbOpen) { - return; - } - - size_t valueSize; - char *valueBuffer = d->db.get(sKey.data(), sKey.size(), &valueSize); - resultHandler(valueBuffer, valueSize); - delete[] valueBuffer; -} - -qint64 Database::diskUsage() const -{ - if (!d->dbOpen) { - return 0; - } - - QFileInfo info(QString::fromStdString(d->db.path())); - return info.size(); -} - -void Database::removeFromDisk() const -{ - if (!d->dbOpen) { - return; - } - - QFileInfo info(QString::fromStdString(d->db.path())); - QDir dir = info.dir(); - dir.remove(info.fileName()); -} -- cgit v1.2.3