/**
* @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
*/
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() {
m_socketManager->bindLogic(m_logic);
+ m_databaseLock.lock(); // Wait until database lock can be acquired
m_storage->load();
}
/**
* @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
*/
#ifndef SRC_SERVICE_MAIN_CYNARA_H_
#define SRC_SERVICE_MAIN_CYNARA_H_
+#include <lock/FileLock.h>
+
#include <main/pointers.h>
namespace Cynara {
SocketManagerPtr m_socketManager;
StoragePtr m_storage;
StorageBackendPtr m_storageBackend;
+ Lockable m_lockFile;
+ FileLock m_databaseLock;
};
} // namespace Cynara