summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Szyndela <adrian.s@samsung.com>2020-10-28 10:40:45 +0100
committerAdrian Szyndela <adrian.s@samsung.com>2020-10-30 12:46:21 +0100
commit4434b9892538978be1fb1ee81c6680b06f8d414e (patch)
treee209d4e7c15c756887d507c251742965760eb0ad
parent51342eb4206998b74615f3a7956ffb584a03e1a1 (diff)
downloadlibdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.tar.gz
libdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.tar.bz2
libdbuspolicy-4434b9892538978be1fb1ee81c6680b06f8d414e.zip
refactoring: generalize operations
Change-Id: I6af4d846397b73dc3dfaf45ccf5ebb0fd1ceef46
-rw-r--r--src/internal/storage_backend_flatbuffers.cpp33
-rw-r--r--src/internal/storage_backend_flatbuffers.hpp10
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;