diff options
author | Adrian Szyndela <adrian.s@samsung.com> | 2020-10-27 14:55:03 +0100 |
---|---|---|
committer | Adrian Szyndela <adrian.s@samsung.com> | 2020-10-30 12:17:55 +0100 |
commit | 8f572a48df3854f257a9ed2560eb48a39cfadb97 (patch) | |
tree | ad16698b27f77e29b90cb9d9795d75976e75b30f | |
parent | 614713bd783bcfe82a0d8ad252288976f799a2ee (diff) | |
download | libdbuspolicy-8f572a48df3854f257a9ed2560eb48a39cfadb97.tar.gz libdbuspolicy-8f572a48df3854f257a9ed2560eb48a39cfadb97.tar.bz2 libdbuspolicy-8f572a48df3854f257a9ed2560eb48a39cfadb97.zip |
refactoring: eliminate StorageBackendFlatbuffersImpl
Change-Id: I73f2a898483fb336518f8b9ef28338ef91e55796
-rw-r--r-- | src/internal/storage_backend_flatbuffers.cpp | 67 | ||||
-rw-r--r-- | 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 <typename T, typename M = typename type_helper<T>::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 <typename T, typename M = typename type_helper<T>::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<ldp_xml_parser::MatchItem##T> { \ @@ -236,7 +222,7 @@ void StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::printContent(cons typedef FB::Policy##T policy_type; \ }; \ template <> \ - auto StorageBackendFlatbuffers::StorageBackendFlatbuffersImpl::getPolicySet<ldp_xml_parser::MatchItem##T>() \ + auto getPolicySet<ldp_xml_parser::MatchItem##T>(const FB::File *file) \ -> const typename type_helper<ldp_xml_parser::MatchItem##T>::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 <typename T> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const T &item) const { - return getDecisionItem(item, pimpl->getPolicySet<T>()->context_mandatory()); + return getDecisionItem(item, getPolicySet<T>(file)->context_mandatory()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const MatchItemSend &item) const { - return pimpl->getDecisionFromSendIndex(item, pimpl->getPolicySet<MatchItemSend>()->context_mandatory()); + return getDecisionFromSendIndex(item, getPolicySet<MatchItemSend>(file)->context_mandatory()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const MatchItemSend &item) const { - return pimpl->getDecisionFromSendIndex(item, pimpl->getPolicySet<MatchItemSend>()->context_default()); + return getDecisionFromSendIndex(item, getPolicySet<MatchItemSend>(file)->context_default()); } template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const MatchItemSend &item) const { - auto *policyPair = pimpl->getPolicySet<MatchItemSend>()->user()->LookupByKey(uid); + auto *policyPair = getPolicySet<MatchItemSend>(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 <typename T> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const T &item) const { - return getDecisionItem(item, pimpl->getPolicySet<T>()->context_default()); + return getDecisionItem(item, getPolicySet<T>(file)->context_default()); } template <typename T> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const T &item) const { - return getDecisionItemMaybeNull(item, pimpl->getPolicySet<T>()->user()->LookupByKey(uid)); + return getDecisionItemMaybeNull(item, getPolicySet<T>(file)->user()->LookupByKey(uid)); } template <typename T> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemGroup(gid_t gid, const T &item) const { - return getDecisionItemMaybeNull(item, pimpl->getPolicySet<T>()->group()->LookupByKey(gid)); + return getDecisionItemMaybeNull(item, getPolicySet<T>(file)->group()->LookupByKey(gid)); } template <typename T> bool StorageBackendFlatbuffers::existsPolicyForGroup(gid_t gid) const { - return pimpl->getPolicySet<T>()->group()->LookupByKey(gid) != nullptr; + return getPolicySet<T>(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 <memory> @@ -22,8 +23,6 @@ namespace ldp_serialized { class StorageBackendFlatbuffers { - class StorageBackendFlatbuffersImpl; - std::unique_ptr<StorageBackendFlatbuffersImpl> pimpl; public: StorageBackendFlatbuffers(); ~StorageBackendFlatbuffers(); @@ -50,6 +49,8 @@ public: template <typename T> bool existsPolicyForGroup(gid_t gid) const; +private: + const FB::File *file{nullptr}; }; } |