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()) {
#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
/** 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
__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);
releaseFD();
}
- if (nullptr != serializer.get())
- serializer.reset(nullptr);
-
impl.release();
}
#include "policy.hpp"
#include "serialization_backend.hpp"
-#include "serializer.hpp"
-#include <memory>
#include <sys/types.h>
namespace ldp_serialized {
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
uint8_t *__mem;
size_t __length{0};
- std::unique_ptr<ldp_serializer::Serializer> serializer;
-
void releaseMMap();
void releaseFD();
};