diff options
author | Adrian Szyndela <adrian.s@samsung.com> | 2020-10-28 10:40:45 +0100 |
---|---|---|
committer | Adrian Szyndela <adrian.s@samsung.com> | 2020-10-30 12:46:21 +0100 |
commit | 4434b9892538978be1fb1ee81c6680b06f8d414e (patch) | |
tree | e209d4e7c15c756887d507c251742965760eb0ad | |
parent | 51342eb4206998b74615f3a7956ffb584a03e1a1 (diff) | |
download | libdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.tar.gz libdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.tar.bz2 libdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.zip |
refactoring: generalize operations
Change-Id: I6af4d846397b73dc3dfaf45ccf5ebb0fd1ceef46
-rw-r--r-- | src/internal/storage_backend_flatbuffers.cpp | 33 | ||||
-rw-r--r-- | src/internal/storage_backend_flatbuffers.hpp | 10 |
2 files changed, 16 insertions, 27 deletions
diff --git a/src/internal/storage_backend_flatbuffers.cpp b/src/internal/storage_backend_flatbuffers.cpp index 07b1213..feba813 100644 --- a/src/internal/storage_backend_flatbuffers.cpp +++ b/src/internal/storage_backend_flatbuffers.cpp @@ -60,7 +60,7 @@ bool StorageBackendFlatbuffers::match(const ldp_xml_parser::MatchItemAccess &mat } template <typename T, typename P = typename type_helper<T>::policy_type> -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, const P *policy) const { +ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, const P *policy, ldp_serialization::ItemsType) const { const auto *v = policyGetItems(policy); auto rend = containerGetReverseIteratorEnd(v); for (auto rit = containerGetReverseIterator(v); rit != rend; ++rit) { @@ -99,7 +99,8 @@ auto StorageBackendFlatbuffers::getDecisionItemFromTree(const FB::PolicyOwnNode template <> ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const ldp_xml_parser::MatchItemOwn &item, - const PolicyOwn *policy) const { + const PolicyOwn *policy, + ldp_serialization::TreeType) const { if (item.getName().length() == 0) return ldp_xml_parser::Decision::DENY; @@ -122,10 +123,10 @@ ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const Ma return getDecisionItem(item, setUserGroupGetPolicy(elem.second)); } -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemFromSendIndex(const MatchItemSend &item, const FB::PolicySend *policy) const { +ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const MatchItemSend &item, const FB::PolicySend *policy) const { if (!policyHasIndex(policy)) - return getDecisionItem(item, policy); // make it old way for old databases + return getDecisionItem(item, policy, ldp_serialization::ItemsType()); // make it old way for old databases auto index = policyGetIndex(policy); @@ -242,27 +243,9 @@ TYPE_HELPER(Send, send) TYPE_HELPER(Receive, receive) TYPE_HELPER(Access, access) -template <> -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextMandatory(const MatchItemSend &item) const { - return getDecisionItemFromSendIndex(item, setGetContextMandatory(getPolicySet<MatchItemSend>())); -} - -template <> -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemContextDefault(const MatchItemSend &item) const { - return getDecisionItemFromSendIndex(item, setGetContextDefault(getPolicySet<MatchItemSend>())); -} - -template <> -ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItemUser(uid_t uid, const MatchItemSend &item) const { - auto map = setGetUser(getPolicySet<MatchItemSend>()); - - if (containerEmpty(map)) - return ldp_xml_parser::Decision::ANY; - - auto elem = containerLookupByKey(map, uid); - if (!elem.first) - return ldp_xml_parser::Decision::ANY; - return getDecisionItemFromSendIndex(item, setUserGroupGetPolicy(elem.second)); +template <typename T, typename P> +ldp_xml_parser::DecisionItem StorageBackendFlatbuffers::getDecisionItem(const T &item, P policy) const { + return getDecisionItem(item, policy, typename ldp_serialization::PolicyContentType<P>::result()); } template <typename T> diff --git a/src/internal/storage_backend_flatbuffers.hpp b/src/internal/storage_backend_flatbuffers.hpp index 536808a..cf7d4e1 100644 --- a/src/internal/storage_backend_flatbuffers.hpp +++ b/src/internal/storage_backend_flatbuffers.hpp @@ -214,9 +214,15 @@ private: auto getPolicySet() const; template <typename T, typename P> - ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy) const; + ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy, ldp_serialization::ItemsType) const; - ldp_xml_parser::DecisionItem getDecisionItemFromSendIndex(const ldp_xml_parser::MatchItemSend &item, const FB::PolicySend *policy) const; + template <typename T, typename P> + ldp_xml_parser::DecisionItem getDecisionItem(const T &item, const P *policy, ldp_serialization::TreeType) const; + + template <typename T, typename P> + ldp_xml_parser::DecisionItem getDecisionItem(const T &item, P policy) const; + + ldp_xml_parser::DecisionItem getDecisionItem(const ldp_xml_parser::MatchItemSend &item, const FB::PolicySend *policy) const; template <typename MatchItem, typename Map> ldp_xml_parser::DecisionItem getDecisionItem(const MatchItem &item, const Map &map, id_t id) const; |