From 614713bd783bcfe82a0d8ad252288976f799a2ee Mon Sep 17 00:00:00 2001 From: Adrian Szyndela Date: Tue, 27 Oct 2020 13:40:26 +0100 Subject: [PATCH] refactoring: decouple StorageBackendSerialized and Serializer Change-Id: Ib4fbd8db4a2585694d50bfce33432b170c2cdb96 --- src/internal/naive_policy_checker.cpp | 15 ++++++++++----- src/internal/naive_policy_checker.hpp | 4 ++++ src/internal/storage_backend_serialized.cpp | 16 ---------------- src/internal/storage_backend_serialized.hpp | 5 ----- 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/src/internal/naive_policy_checker.cpp b/src/internal/naive_policy_checker.cpp index 8939f3f..4e5b634 100644 --- a/src/internal/naive_policy_checker.cpp +++ b/src/internal/naive_policy_checker.cpp @@ -220,19 +220,24 @@ bool NaivePolicyChecker::initDb(const char *config_name, const char *serialized_ assert(config_name[0]); bool result = false; + m_bus_db.release(); - if (serialized_filename) { - if (m_bus_db.init(serialized_filename)) - result = true; - } + if (serialized_filename) + result = m_bus_db.init(serialized_filename); if (!result) { tslog::logWarning(std::string(serialized_filename?:"") .append(": serialized policy file not found, using XML policy file")); // fallback - we have only XML files - result = m_bus_db.initFromXML(config_name); + serializer.reset(new ldp_serializer::Serializer()); + + size_t serialized_size; + auto data = serializer->serialize(config_name, serialized_size); + + if (nullptr != data) + result = m_bus_db.initFromData(data, serialized_size, false); } if (result && tslog::enabled()) { diff --git a/src/internal/naive_policy_checker.hpp b/src/internal/naive_policy_checker.hpp index d92fba2..8edc55b 100644 --- a/src/internal/naive_policy_checker.hpp +++ b/src/internal/naive_policy_checker.hpp @@ -26,8 +26,10 @@ #include "policy.hpp" #include "global_nodestruct.hpp" #include "storage_backend_serialized.hpp" +#include "serializer.hpp" #include +#include #include namespace ldp_xml_parser @@ -42,6 +44,8 @@ namespace ldp_xml_parser /** Policy database */ ldp_serialized::StorageBackendSerialized m_bus_db; + /** Serializer - provides serialized data in case no serialized data file is found */ + std::unique_ptr serializer; /** Parses delivered decision. In case of Decision::CHECK calls cynara. * \param[in] decision Decision from checkers diff --git a/src/internal/storage_backend_serialized.cpp b/src/internal/storage_backend_serialized.cpp index f9fb54f..12959d3 100644 --- a/src/internal/storage_backend_serialized.cpp +++ b/src/internal/storage_backend_serialized.cpp @@ -101,19 +101,6 @@ void StorageBackendSerialized::releaseMMap() { __length = 0; } -bool StorageBackendSerialized::initFromXML(const char *config_name) { - assert(nullptr == serializer.get()); - - serializer.reset(new ldp_serializer::Serializer()); - - size_t serialized_size; - auto data = serializer->serialize(config_name, serialized_size); - if (nullptr == data) - return false; - - return initFromData(data, serialized_size, false); -} - void StorageBackendSerialized::releaseFD() { assert(-1 != __fd); @@ -129,8 +116,5 @@ void StorageBackendSerialized::release() { releaseFD(); } - if (nullptr != serializer.get()) - serializer.reset(nullptr); - impl.release(); } diff --git a/src/internal/storage_backend_serialized.hpp b/src/internal/storage_backend_serialized.hpp index 9a498b5..9438f86 100644 --- a/src/internal/storage_backend_serialized.hpp +++ b/src/internal/storage_backend_serialized.hpp @@ -23,8 +23,6 @@ #include "policy.hpp" #include "serialization_backend.hpp" -#include "serializer.hpp" -#include #include namespace ldp_serialized { @@ -37,7 +35,6 @@ public: bool init(const char *filename, bool verify = false); bool initFromData(const uint8_t *serialized_data, size_t length, bool verify = false); - bool initFromXML(const char *config_name); void release(); void printContent(bool xml_format = false) const @@ -77,8 +74,6 @@ private: uint8_t *__mem; size_t __length{0}; - std::unique_ptr serializer; - void releaseMMap(); void releaseFD(); }; -- 2.7.4