From 8f572a48df3854f257a9ed2560eb48a39cfadb97 Mon Sep 17 00:00:00 2001 From: Adrian Szyndela Date: Tue, 27 Oct 2020 14:55:03 +0100 Subject: [PATCH] refactoring: eliminate StorageBackendFlatbuffersImpl Change-Id: I73f2a898483fb336518f8b9ef28338ef91e55796 --- src/internal/storage_backend_flatbuffers.cpp | 67 ++++++++-------------------- src/internal/storage_backend_flatbuffers.hpp | 5 ++- 2 files changed, 21 insertions(+), 51 deletions(-) diff --git a/src/internal/storage_backend_flatbuffers.cpp b/src/internal/storage_backend_flatbuffers.cpp index 4867185..1cac9ce 100644 --- a/src/internal/storage_backend_flatbuffers.cpp +++ b/src/internal/storage_backend_flatbuffers.cpp @@ -110,23 +110,10 @@ ldp_xml_parser::DecisionItem getDecisionItemMaybeNull(const T &item, const P *po } // anonymous namespace -class StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl { - const FB::File *file{nullptr}; +template ::policy_set_type> +const M *getPolicySet(const FB::File *file); -public: - bool initFromData(const uint8_t *mem, size_t size, bool verify); - void release(); - - ldp_xml_parser::DecisionItem getDecisionFromSendIndex(const MatchItemSend &item, const FB::PolicySend *policy); - - void printContent(const bool xml_format = false) const; - - template ::policy_set_type> - const M *getPolicySet(); -}; - -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::getDecisionFromSendIndex(const MatchItemSend &item, - const FB::PolicySend *policy) { +ldp_xml_parser::DecisionItem getDecisionFromSendIndex(const MatchItemSend &item, const FB::PolicySend *policy) { const auto *index = policy->index(); @@ -194,11 +181,11 @@ ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::StorageBackendFlatbuffer return ldp_xml_parser::DecisionItem(ldp_xml_parser::Decision::ANY); } -void StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::release() { +void StorageBackendFlatbuffers::release() { file = nullptr; } -bool StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::initFromData(const uint8_t *mem, size_t size, bool verify) { +bool StorageBackendFlatbuffers::initFromData(const uint8_t *mem, size_t size, bool verify) { assert(nullptr == file); if (verify) { @@ -222,13 +209,12 @@ bool StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::initFromData(cons return file != nullptr; } -void StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::printContent(const bool xml_format) const { +void StorageBackendFlatbuffers::printContent(const bool xml_format) const { print_content::use_xml_format(xml_format); std::cerr << *file; } /*************************************************/ - #define TYPE_HELPER(T, t) \ template <> \ struct type_helper { \ @@ -236,7 +222,7 @@ void StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::printContent(cons typedef FB::Policy##T policy_type; \ }; \ template <> \ - auto StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::getPolicySet() \ + auto getPolicySet(const FB::File *file) \ -> const typename type_helper::policy_set_type * { \ assert(file); \ return file->m_##t##_set(); \ @@ -247,59 +233,47 @@ TYPE_HELPER(Send, send) TYPE_HELPER(Receive, receive) TYPE_HELPER(Access, access) -bool StorageBackendFlatbuffers::initFromData(const uint8_t *serialized_data, size_t length, bool verify) { - return pimpl->initFromData(serialized_data, length, verify); -} - -void StorageBackendFlatbuffers::release() { - pimpl->release(); -} - -void StorageBackendFlatbuffers::printContent(const bool xml_format) const { - pimpl->printContent(xml_format); -} - template ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const T &item) const { - return getDecisionItem(item, pimpl->getPolicySet()->context_mandatory()); + return getDecisionItem(item, getPolicySet(file)->context_mandatory()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const MatchItemSend &item) const { - return pimpl->getDecisionFromSendIndex(item, pimpl->getPolicySet()->context_mandatory()); + return getDecisionFromSendIndex(item, getPolicySet(file)->context_mandatory()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const MatchItemSend &item) const { - return pimpl->getDecisionFromSendIndex(item, pimpl->getPolicySet()->context_default()); + return getDecisionFromSendIndex(item, getPolicySet(file)->context_default()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const MatchItemSend &item) const { - auto *policyPair = pimpl->getPolicySet()->user()->LookupByKey(uid); + auto *policyPair = getPolicySet(file)->user()->LookupByKey(uid); if (nullptr == policyPair) return ldp_xml_parser::Decision::ANY; - return pimpl->getDecisionFromSendIndex(item, policyPair->policy()); + return getDecisionFromSendIndex(item, policyPair->policy()); } template ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const T &item) const { - return getDecisionItem(item, pimpl->getPolicySet()->context_default()); + return getDecisionItem(item, getPolicySet(file)->context_default()); } template ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const T &item) const { - return getDecisionItemMaybeNull(item, pimpl->getPolicySet()->user()->LookupByKey(uid)); + return getDecisionItemMaybeNull(item, getPolicySet(file)->user()->LookupByKey(uid)); } template ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemGroup(gid_t gid, const T &item) const { - return getDecisionItemMaybeNull(item, pimpl->getPolicySet()->group()->LookupByKey(gid)); + return getDecisionItemMaybeNull(item, getPolicySet(file)->group()->LookupByKey(gid)); } template bool StorageBackendFlatbuffers::existsPolicyForGroup(gid_t gid) const { - return pimpl->getPolicySet()->group()->LookupByKey(gid) != nullptr; + return getPolicySet(file)->group()->LookupByKey(gid) != nullptr; } #define T_INSTANTIATION(T) \ @@ -324,12 +298,7 @@ T_INSTANTIATION2(Receive) #undef T_INSTANTIATION2 -StorageBackendFlatbuffers::StorageBackendFlatbuffers() - : pimpl{new StorageBackendFlatbuffersImpl} { -} - -StorageBackendFlatbuffers::~StorageBackendFlatbuffers() { - pimpl->release(); -} +StorageBackendFlatbuffers::StorageBackendFlatbuffers() {} +StorageBackendFlatbuffers::~StorageBackendFlatbuffers() {} } diff --git a/src/internal/storage_backend_flatbuffers.hpp b/src/internal/storage_backend_flatbuffers.hpp index 6bdd707..d0946fd 100644 --- a/src/internal/storage_backend_flatbuffers.hpp +++ b/src/internal/storage_backend_flatbuffers.hpp @@ -15,6 +15,7 @@ */ #pragma once +#include "include/fb_generated.h" #include "policy.hpp" #include @@ -22,8 +23,6 @@ namespace ldp_serialized { class StorageBackendFlatbuffers { - class StorageBackendFlatbuffersImpl; - std::unique_ptr pimpl; public: StorageBackendFlatbuffers(); ~StorageBackendFlatbuffers(); @@ -50,6 +49,8 @@ public: template bool existsPolicyForGroup(gid_t gid) const; +private: + const FB::File *file{nullptr}; }; } -- 2.7.4