From e93b24d06c07075453ab611294e74c29fe04e068 Mon Sep 17 00:00:00 2001 From: Adrian Szyndela Date: Tue, 29 Sep 2020 16:56:59 +0200 Subject: [PATCH] refactoring: hide FB::File from interfaces Hide FB::File from interface of StorageBackendSerialized. This generalizes the StorageBackendSerialized interface. And that allows other implementations. Change-Id: I84631685e6ead50b33e7254c73dfb9af18bb9c4d --- src/internal/storage_backend_serialized.cpp | 31 ++++++++++++---------- src/internal/storage_backend_serialized.hpp | 3 +-- src/libdbuspolicy1.cpp | 1 + src/stest_load_perf.cpp | 6 ++--- src/stest_performance.cpp | 6 ++--- src/test-libdbuspolicy1-access-deny-gdi.cpp | 6 ++--- src/test-libdbuspolicy1-method-gdi.cpp | 5 ++-- src/test-libdbuspolicy1-method.cpp | 1 + src/test-libdbuspolicy1-ownership-deny-gdi.cpp | 3 +-- src/test-libdbuspolicy1-ownership-gdi.cpp | 3 +-- ...buspolicy1-send_destination_prefix-deny-gdi.cpp | 4 +-- src/test-libdbuspolicy1-signal-gdi.cpp | 4 +-- 12 files changed, 32 insertions(+), 41 deletions(-) diff --git a/src/internal/storage_backend_serialized.cpp b/src/internal/storage_backend_serialized.cpp index fa8fe4e..4df4e36 100644 --- a/src/internal/storage_backend_serialized.cpp +++ b/src/internal/storage_backend_serialized.cpp @@ -136,7 +136,7 @@ class StorageBackendSerialized::StorageBackendSerializedImpl { public: bool init(const char *filename, bool verify); - bool init(const FB::File *f); + bool initFromData(const uint8_t *mem, bool verify); bool initFromXML(const char *config_name); void release(); @@ -280,6 +280,19 @@ bool StorageBackendSerialized::StorageBackendSerializedImpl::init(const char *fi return err("mmap"); auto mmapGuard = transaction_guard::makeGuard([&] () { releaseMMap(); }); + + if (!initFromData(mem, verify)) + return false; + + openGuard.dismiss(); + mmapGuard.dismiss(); + + return true; +} + +bool StorageBackendSerialized::StorageBackendSerializedImpl::initFromData(const uint8_t *mem, bool verify) { + assert(nullptr == file); + if (verify) { auto verifier = flatbuffers::Verifier(mem, length); if (!FB::VerifyFileBuffer(verifier) || !FB::FileBufferHasIdentifier(mem)) { @@ -297,20 +310,10 @@ bool StorageBackendSerialized::StorageBackendSerializedImpl::init(const char *fi } } - openGuard.dismiss(); - mmapGuard.dismiss(); - file = GetFile(mem); return file != nullptr; } -bool StorageBackendSerialized::StorageBackendSerializedImpl::init(const FB::File *f) { - assert(nullptr == file); - - file = f; - return true; -} - bool StorageBackendSerialized::StorageBackendSerializedImpl::initFromXML(const char *config_name) { assert(nullptr == file); assert(nullptr == serializer.get()); @@ -322,7 +325,7 @@ bool StorageBackendSerialized::StorageBackendSerializedImpl::initFromXML(const c if (nullptr == data) return false; - return init(FB::GetFile(data)); + return initFromData(data, false); } void StorageBackendSerialized::StorageBackendSerializedImpl::printContent(const bool xml_format) const { @@ -354,8 +357,8 @@ bool StorageBackendSerialized::init(const char *filename, bool verify) { return pimpl->init(filename, verify); } -bool StorageBackendSerialized::init(const FB::File *f) { - return pimpl->init(f); +bool StorageBackendSerialized::initFromData(const uint8_t *serialized_data, bool verify) { + return pimpl->initFromData(serialized_data, verify); } bool StorageBackendSerialized::initFromXML(const char *config_name) { diff --git a/src/internal/storage_backend_serialized.hpp b/src/internal/storage_backend_serialized.hpp index ef40013..cb83b8d 100644 --- a/src/internal/storage_backend_serialized.hpp +++ b/src/internal/storage_backend_serialized.hpp @@ -16,7 +16,6 @@ #pragma once #include "policy.hpp" -#include "fb_generated.h" #include @@ -30,7 +29,7 @@ public: ~StorageBackendSerialized(); bool init(const char *filename, bool verify = false); - bool init(const FB::File *file); + bool initFromData(const uint8_t *serialized_data, bool verify = false); bool initFromXML(const char *config_name); void release(); diff --git a/src/libdbuspolicy1.cpp b/src/libdbuspolicy1.cpp index 027f385..e1975f8 100644 --- a/src/libdbuspolicy1.cpp +++ b/src/libdbuspolicy1.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/src/stest_load_perf.cpp b/src/stest_load_perf.cpp index bf45b51..45f5cad 100644 --- a/src/stest_load_perf.cpp +++ b/src/stest_load_perf.cpp @@ -42,7 +42,7 @@ bool run_xml(const char *conf_file) { bool run_xml_plus_fb(const char *conf_file, bool verify) { Serializer serializer; size_t size; - uint8_t *buff = serializer.serialize(conf_file, size); + const uint8_t *buff = serializer.serialize(conf_file, size); if (verify) { auto verifier = flatbuffers::Verifier(buff, size); @@ -52,10 +52,8 @@ bool run_xml_plus_fb(const char *conf_file, bool verify) { } } - const FB::File *file = FB::GetFile(buff); - StorageBackendSerialized storage; - return storage.init(file); + return storage.initFromData(buff); } bool run_fb(const char *conf_file, bool verify) { diff --git a/src/stest_performance.cpp b/src/stest_performance.cpp index bbb60a7..09003e5 100644 --- a/src/stest_performance.cpp +++ b/src/stest_performance.cpp @@ -188,7 +188,7 @@ void run_x_times(std::function func, size_t times) { void run_fb(const char *conf_file, bool verify, size_t count, bool worst) { Serializer serializer; size_t size; - uint8_t *buff = serializer.serialize(conf_file, size); + const uint8_t *buff = serializer.serialize(conf_file, size); if (verify) { auto verifier = flatbuffers::Verifier(buff, size); @@ -198,10 +198,8 @@ void run_fb(const char *conf_file, bool verify, size_t count, bool worst) { } } - const FB::File *file = FB::GetFile(buff); - StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FLATBUFFERS:\n"); if (!worst) diff --git a/src/test-libdbuspolicy1-access-deny-gdi.cpp b/src/test-libdbuspolicy1-access-deny-gdi.cpp index dbad42a..db4de34 100644 --- a/src/test-libdbuspolicy1-access-deny-gdi.cpp +++ b/src/test-libdbuspolicy1-access-deny-gdi.cpp @@ -153,13 +153,11 @@ bool run_fb(const std::pair access_test) { printf("FLATBUFFERS:\n"); - const FB::File *file_sys = FB::GetFile(buff_sys); - storage_sys.init(file_sys); + storage_sys.initFromData(buff_sys); bool res = run_tests_for_bus(storage_sys, policy_checker_system(), system_bus_setup.second, i, passed); if (buff_ses) { - const FB::File *file_ses = FB::GetFile(buff_ses); - storage_ses.init(file_ses); + storage_ses.initFromData(buff_ses); res &= run_tests_for_bus(storage_ses, policy_checker_session(), session_bus_setup.second, i, passed); } return res; diff --git a/src/test-libdbuspolicy1-method-gdi.cpp b/src/test-libdbuspolicy1-method-gdi.cpp index 3880c40..7350a18 100644 --- a/src/test-libdbuspolicy1-method-gdi.cpp +++ b/src/test-libdbuspolicy1-method-gdi.cpp @@ -126,11 +126,10 @@ bool run_fb() { Serializer serializer; size_t size; - uint8_t *buff = serializer.serialize("tests/default_allow/system.conf", size); - const FB::File *file = FB::GetFile(buff); + const uint8_t *buff = serializer.serialize("tests/default_allow/system.conf", size); StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FLATBUFFERS:\n"); bool ret = method_test(storage); return ret; diff --git a/src/test-libdbuspolicy1-method.cpp b/src/test-libdbuspolicy1-method.cpp index 2655542..acab322 100644 --- a/src/test-libdbuspolicy1-method.cpp +++ b/src/test-libdbuspolicy1-method.cpp @@ -1,4 +1,5 @@ +#include #include #include #include diff --git a/src/test-libdbuspolicy1-ownership-deny-gdi.cpp b/src/test-libdbuspolicy1-ownership-deny-gdi.cpp index 3d86a31..0427f20 100644 --- a/src/test-libdbuspolicy1-ownership-deny-gdi.cpp +++ b/src/test-libdbuspolicy1-ownership-deny-gdi.cpp @@ -183,9 +183,8 @@ bool run_fb() { size_t size; uint8_t *buff = serializer.serialize("tests/default_deny/system.conf", size); - const FB::File *file = FB::GetFile(buff); StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FRAMEBUFFERS:\n"); return ownership_test(storage); diff --git a/src/test-libdbuspolicy1-ownership-gdi.cpp b/src/test-libdbuspolicy1-ownership-gdi.cpp index 779ec6c..c7138bb 100644 --- a/src/test-libdbuspolicy1-ownership-gdi.cpp +++ b/src/test-libdbuspolicy1-ownership-gdi.cpp @@ -105,10 +105,9 @@ bool run_fb() { Serializer serializer; size_t size; uint8_t *buff = serializer.serialize("tests/default_allow/system.conf", size); - const FB::File *file = FB::GetFile(buff); StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FLATBUFFERS:\n"); return ownership_test(storage); } diff --git a/src/test-libdbuspolicy1-send_destination_prefix-deny-gdi.cpp b/src/test-libdbuspolicy1-send_destination_prefix-deny-gdi.cpp index 3c9049b..fc0ac57 100644 --- a/src/test-libdbuspolicy1-send_destination_prefix-deny-gdi.cpp +++ b/src/test-libdbuspolicy1-send_destination_prefix-deny-gdi.cpp @@ -190,10 +190,8 @@ bool run_fb() { size_t size; uint8_t *buff = serializer.serialize("tests/default_deny/system.conf", size); - const FB::File *file = FB::GetFile(buff); - StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FLATBUFFERS:\n"); return send_prefix_test(storage); diff --git a/src/test-libdbuspolicy1-signal-gdi.cpp b/src/test-libdbuspolicy1-signal-gdi.cpp index d538f6c..0bcdfcb 100644 --- a/src/test-libdbuspolicy1-signal-gdi.cpp +++ b/src/test-libdbuspolicy1-signal-gdi.cpp @@ -85,10 +85,8 @@ bool run_fb() { size_t size; uint8_t *buff = serializer.serialize("tests/default_allow/system.conf", size); - const FB::File *file = FB::GetFile(buff); - StorageBackendSerialized storage; - storage.init(file); + storage.initFromData(buff); printf("FLATBUFFERS:\n"); return signal_test(storage); -- 2.7.4