Make SessionStore a proper singleton
- SessionStore class now has a proper singleton structure
- session_storage_singleton.hpp is removed
- from_json(..) function for SessionStore is changed to a specialized
template
- minor cosmetic fixes added
- Move the template class usages of Crow App over to a non-template
parameter
Change-Id: Ic9effd5b7bac089a84c80a0caa97bd46d4984416
Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
diff --git a/include/persistent_data_middleware.hpp b/include/persistent_data_middleware.hpp
index 77a5bbb..cf32e07 100644
--- a/include/persistent_data_middleware.hpp
+++ b/include/persistent_data_middleware.hpp
@@ -2,9 +2,9 @@
#include <nlohmann/json.hpp>
#include <pam_authenticate.hpp>
+#include <sessions.hpp>
#include <webassets.hpp>
#include <random>
-#include "session_storage_singleton.hpp"
#include <crow/app.h>
#include <crow/http_request.h>
#include <crow/http_response.h>
@@ -28,7 +28,7 @@
Middleware() { read_data(); }
~Middleware() {
- if (PersistentData::session_store->needs_write()) {
+ if (PersistentData::SessionStore::getInstance().needs_write()) {
write_data();
}
}
@@ -68,11 +68,12 @@
if (jSessions != data.end()) {
if (jSessions->is_object()) {
for (const auto& elem : *jSessions) {
- std::shared_ptr<UserSession> newSession = std::make_shared<UserSession>();
+ std::shared_ptr<UserSession> newSession =
+ std::make_shared<UserSession>();
if (newSession->fromJson(elem)) {
- session_store->auth_tokens.emplace(newSession->unique_id,
- newSession);
+ SessionStore::getInstance().auth_tokens.emplace(
+ newSession->unique_id, newSession);
}
}
}
@@ -97,7 +98,7 @@
void write_data() {
std::ofstream persistent_file(filename);
nlohmann::json data;
- data["sessions"] = PersistentData::session_store->auth_tokens;
+ data["sessions"] = PersistentData::SessionStore::getInstance().auth_tokens;
data["system_uuid"] = system_uuid;
data["revision"] = json_revision;
persistent_file << data;
@@ -106,5 +107,5 @@
std::string system_uuid;
};
-} // namespaec PersistentData
+} // namespace PersistentData
} // namespace crow