Lock database in Cynara::init() 38/29338/15
authorAleksander Zdyb <a.zdyb@samsung.com>
Mon, 27 Oct 2014 13:49:11 +0000 (14:49 +0100)
committerAleksander Zdyb <a.zdyb@samsung.com>
Tue, 23 Dec 2014 14:57:31 +0000 (15:57 +0100)
Change-Id: Ib90550c8dd26af899d9749901b3ab3e043fe3e2a

src/service/main/Cynara.cpp
src/service/main/Cynara.h

index 96443ce..a6b96c6 100644 (file)
@@ -16,6 +16,7 @@
 /**
  * @file        src/service/main/Cynara.cpp
  * @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
  * @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();
 }
 
index 89bdd76..b138040 100644 (file)
@@ -16,6 +16,7 @@
 /**
  * @file        src/service/main/Cynara.h
  * @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
  * @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 <lock/FileLock.h>
+
 #include <main/pointers.h>
 
 namespace Cynara {
@@ -43,6 +46,8 @@ private:
     SocketManagerPtr m_socketManager;
     StoragePtr m_storage;
     StorageBackendPtr m_storageBackend;
+    Lockable m_lockFile;
+    FileLock m_databaseLock;
 };
 
 } // namespace Cynara