From: Adrian Szyndela Date: Tue, 27 Oct 2020 12:40:26 +0000 (+0100) Subject: refactoring: decouple StorageBackendSerialized and Serializer X-Git-Tag: accepted/tizen/unified/20201105.124409~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F246288%2F3;p=platform%2Fcore%2Fsystem%2Flibdbuspolicy.git refactoring: decouple StorageBackendSerialized and Serializer Change-Id: Ib4fbd8db4a2585694d50bfce33432b170c2cdb96 --- 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(); };