{
tslog::log_verbose("checkpolicy for: ", item, "\n");
- for (auto i : policy) {
- tslog::log_verbose("-read: ", i->getDecision(), " ", i, "\n");
-
- if (i->match(item)) {
- tslog::log_verbose("-matched: ", i->getDecision(), " ", i, "\n");
-
- return i->getDecision();
- }
- }
- return Decision::ANY;
+ return policy.getDecisionItem(item);
}
DecisionItem NaivePolicyChecker::checkPolicy(const NaivePolicyDb::PolicyOwn& policy, const MatchItemOwn& item) const
}
}
+/****************** NaivePolicyDb::PolicySR ************************/
+void NaivePolicyDb::PolicySR::addItem(ItemSendReceive* item) {
+ m_items.push_back(item);
+}
+
+size_t NaivePolicyDb::PolicySR::getSize() const {
+ size_t size = m_items.capacity() * sizeof(decltype(m_items)::value_type);
+ for (const auto& i : m_items)
+ size += i->getSize();
+ return size;
+}
+
+void NaivePolicyDb::PolicySR::printContent() const {
+ for (const auto& i : m_items)
+ std::cerr << i << std::endl;
+}
+
+DecisionItem NaivePolicyDb::PolicySR::getDecisionItem(const MatchItemSR &item) const {
+ for (auto i : *this) {
+ tslog::log_verbose("-read: ", i->getDecision(), " ", i, "\n");
+
+ if (i->match(item)) {
+ tslog::log_verbose("-matched: ", i->getDecision(), " ", i, "\n");
+
+ return i->getDecision();
+ }
+ }
+ return Decision::ANY;
+}
+
void NaivePolicyDb::printMap(const std::map<gid_t, std::vector<gid_t>>& map) const
{
int size = sizeof(map) + map.size() * sizeof(std::remove_reference<decltype(map)>::type::value_type);
return m_access_set.getPolicy(policy_type, policy_type_value, policy);
}
-void NaivePolicyDb::PolicySR::addItem(ItemSendReceive* item) {
- m_items.push_back(item);
-}
-
-size_t NaivePolicyDb::PolicySR::getSize() const {
- size_t size = m_items.capacity() * sizeof(decltype(m_items)::value_type);
- for (const auto& i : m_items)
- size += i->getSize();
- return size;
-}
-
-void NaivePolicyDb::PolicySR::printContent() const {
- for (const auto& i : m_items)
- std::cerr << i << std::endl;
-}
-
void NaivePolicyDb::PolicyOwn::addItem(ItemOwn* item) {
ownership_tree.addItem(item);
}
/** Vector with policy items */
std::vector<ItemSendReceive const *> m_items;
typedef decltype(m_items)::const_reverse_iterator PolicyConstIterator;
- public:
+
PolicyConstIterator begin() const { return m_items.rbegin(); }
PolicyConstIterator end() const { return m_items.rend(); }
+ public:
/** Adds given item to policy.
* \param[in] item Item to add to policy
*/
void addItem(ItemSendReceive* item);
+
+ DecisionItem getDecisionItem(const MatchItemSR &item) const;
void printContent() const;
size_t getSize() const;
};