refactoring: decouple StorageBackendSerialized and Serializer 88/246288/3
authorAdrian Szyndela <adrian.s@samsung.com>
Tue, 27 Oct 2020 12:40:26 +0000 (13:40 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Fri, 30 Oct 2020 11:17:53 +0000 (12:17 +0100)
Change-Id: Ib4fbd8db4a2585694d50bfce33432b170c2cdb96

src/internal/naive_policy_checker.cpp
src/internal/naive_policy_checker.hpp
src/internal/storage_backend_serialized.cpp
src/internal/storage_backend_serialized.hpp

index 8939f3f..4e5b634 100644 (file)
@@ -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?:"<no_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()) {
index d92fba2..8edc55b 100644 (file)
 #include "policy.hpp"
 #include "global_nodestruct.hpp"
 #include "storage_backend_serialized.hpp"
+#include "serializer.hpp"
 
 #include <map>
+#include <memory>
 #include <vector>
 
 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<ldp_serializer::Serializer> serializer;
 
                /** Parses delivered decision. In case of Decision::CHECK calls cynara.
                 * \param[in] decision Decision from checkers
index f9fb54f..12959d3 100644 (file)
@@ -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();
 }
index 9a498b5..9438f86 100644 (file)
@@ -23,8 +23,6 @@
 
 #include "policy.hpp"
 #include "serialization_backend.hpp"
-#include "serializer.hpp"
-#include <memory>
 #include <sys/types.h>
 
 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<ldp_serializer::Serializer> serializer;
-
        void releaseMMap();
        void releaseFD();
 };