From 198b0d886817f2c5bc97cfd11857d4b314dffae3 Mon Sep 17 00:00:00 2001 From: deva Date: Thu, 10 Jun 2010 07:03:06 +0000 Subject: Add transaction support on database pr. pracro session. Makes it possible to discard all edited macros. --- server/src/session.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'server/src/session.cc') diff --git a/server/src/session.cc b/server/src/session.cc index 803a515..e53565b 100644 --- a/server/src/session.cc +++ b/server/src/session.cc @@ -36,6 +36,7 @@ #include #include "journalwriter.h" +#include "database.h" #include "configuration.h" #include "connectionpool.h" #include "sessionserialiser.h" @@ -44,11 +45,13 @@ Session::Session(std::string sessionid) { _id = sessionid; _journal = NULL; + _database = NULL; } Session::~Session() { if(_journal) delete _journal; + if(_database) delete _database; } std::string Session::id() @@ -73,6 +76,11 @@ void Session::commit() delete _journal; _journal = NULL; } + if(_database != NULL) { + _database->commit(); + delete _database; + _database = NULL; + } } void Session::discard() @@ -81,6 +89,11 @@ void Session::discard() delete _journal; _journal = NULL; } + if(_database != NULL) { + _database->discard(); + delete _database; + _database = NULL; + } } JournalWriter *Session::journal() @@ -92,6 +105,16 @@ JournalWriter *Session::journal() return _journal; } +Database *Session::database() +{ + if(_database == NULL) { + _database = + new Database(Conf::database_backend, Conf::database_addr, "", + Conf::database_user, Conf::database_passwd, ""); + } + return _database; +} + Sessions::Sessions() { } -- cgit v1.2.3