Add tag for indexing optimized list 07/180807/4
authorseolheui kim <s414.kim@samsung.com>
Mon, 4 Jun 2018 09:54:12 +0000 (18:54 +0900)
committerseolheui kim <s414.kim@samsung.com>
Thu, 7 Jun 2018 01:09:20 +0000 (10:09 +0900)
Change-Id: I32f2ed554778000d153a0d4a470e8a046254df0d
Signed-off-by: seolheui kim <s414.kim@samsung.com>
lib/audit-rule/rule.cpp
server/rule-apply-engine.cpp

index bb49fa204f603ca0f854e951c49337a0b8ba9be6..fbf8d6a38525afd5ab4c47b4f5d5683fa2bcb70a 100644 (file)
@@ -28,6 +28,9 @@ bool Rule::combine(Rule &r1, Rule &r2)
        }
 
        for (auto &c : r1.condition) {
+               if (c.first == FieldType::Tag)
+                       continue;
+
                if (r2.condition.find(c.first) != r2.condition.end()) {
                        int ret = c.second->getRelation(r2.condition[c.first]);
                        if (ret == FieldBase::RelSeparate)
@@ -86,6 +89,9 @@ std::vector<char> Rule::data() const
 bool Rule::compareFieldType(const Rule &rule)
 {
        for (auto c : rule.condition) {
+               if (c.first == FieldType::Tag)
+                       continue;
+
                if (condition.find(c.first) == condition.end())
                        return false;
        }
@@ -95,6 +101,9 @@ bool Rule::compareFieldType(const Rule &rule)
 bool Rule::compareCondition(Rule &rule)
 {
        for (auto c : condition) {
+               if (c.first == FieldType::Tag)
+                       continue;
+
                if (rule.condition.find(c.first) == rule.condition.end()
                                || !c.second->compare(rule.condition[c.first])) {
                        return false;
index 8bf953de25048c52eb3b96c7f83c737929d9b360..94e3aae20a6780fd4b09830163ea1dcb52c3b124 100644 (file)
@@ -117,6 +117,12 @@ void RuleApplyEngine::optimize(Rule &rule)
 
        if (!rule.getMask().empty())
                optimizedList.emplace_back(rule);
+
+       //TODO: relocate optimizedList
+       for (auto r = optimizedList.begin()+1; r != optimizedList.end(); r++) {
+               auto index = std::distance(optimizedList.begin(), r);
+               r->setCondition(Tag(std::to_string(index)));
+       }
 }
 
 void RuleApplyEngine::addNeverRules()