From b2abe6e5fd4ac22dc1e75b2efcb9f4177aa57a8d Mon Sep 17 00:00:00 2001 From: Aleksander Zdyb Date: Mon, 27 Oct 2014 14:49:11 +0100 Subject: [PATCH] Lock database in Cynara::init() Change-Id: Ib90550c8dd26af899d9749901b3ab3e043fe3e2a --- src/service/main/Cynara.cpp | 5 ++++- src/service/main/Cynara.h | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/service/main/Cynara.cpp b/src/service/main/Cynara.cpp index 96443ce..a6b96c6 100644 --- a/src/service/main/Cynara.cpp +++ b/src/service/main/Cynara.cpp @@ -16,6 +16,7 @@ /** * @file src/service/main/Cynara.cpp * @author Lukasz Wojciechowski + * @author Aleksander Zdyb * @version 1.0 * @brief This file implements main class of cynara service */ @@ -40,7 +41,8 @@ namespace Cynara { Cynara::Cynara() - : m_logic(nullptr), m_socketManager(nullptr), m_storage(nullptr), m_storageBackend(nullptr) { + : m_logic(nullptr), m_socketManager(nullptr), m_storage(nullptr), m_storageBackend(nullptr), + m_lockFile(PathConfig::StoragePath::lockFile), m_databaseLock(m_lockFile) { } Cynara::~Cynara() { @@ -62,6 +64,7 @@ void Cynara::init(void) { m_socketManager->bindLogic(m_logic); + m_databaseLock.lock(); // Wait until database lock can be acquired m_storage->load(); } diff --git a/src/service/main/Cynara.h b/src/service/main/Cynara.h index 89bdd76..b138040 100644 --- a/src/service/main/Cynara.h +++ b/src/service/main/Cynara.h @@ -16,6 +16,7 @@ /** * @file src/service/main/Cynara.h * @author Lukasz Wojciechowski + * @author Aleksander Zdyb * @version 1.0 * @brief This file defines main class of cynara service */ @@ -23,6 +24,8 @@ #ifndef SRC_SERVICE_MAIN_CYNARA_H_ #define SRC_SERVICE_MAIN_CYNARA_H_ +#include + #include
namespace Cynara { @@ -43,6 +46,8 @@ private: SocketManagerPtr m_socketManager; StoragePtr m_storage; StorageBackendPtr m_storageBackend; + Lockable m_lockFile; + FileLock m_databaseLock; }; } // namespace Cynara -- 2.7.4