Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4fbf286 authored by Christine Tsai's avatar Christine Tsai Committed by Automerger Merge Worker
Browse files

Merge "Pass initial conditions to combination conditions and metrics" into rvc-dev am: c5111c99

Original change: undetermined

Change-Id: Ic172143b38d760ab5bd3db277e02802d86515a65
parents c02368f3 c5111c99
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ CombinationConditionTracker::~CombinationConditionTracker() {
bool CombinationConditionTracker::init(const vector<Predicate>& allConditionConfig,
                                       const vector<sp<ConditionTracker>>& allConditionTrackers,
                                       const unordered_map<int64_t, int>& conditionIdIndexMap,
                                       vector<bool>& stack) {
                                       vector<bool>& stack,
                                       vector<ConditionState>& initialConditionCache) {
    VLOG("Combination predicate init() %lld", (long long)mConditionId);
    if (mInitialized) {
        return true;
@@ -73,9 +74,9 @@ bool CombinationConditionTracker::init(const vector<Predicate>& allConditionConf
            return false;
        }


        bool initChildSucceeded = childTracker->init(allConditionConfig, allConditionTrackers,
                                                     conditionIdIndexMap, stack);
        bool initChildSucceeded =
                childTracker->init(allConditionConfig, allConditionTrackers, conditionIdIndexMap,
                                   stack, initialConditionCache);

        if (!initChildSucceeded) {
            ALOGW("Child initialization failed %lld ", (long long)child);
@@ -95,6 +96,11 @@ bool CombinationConditionTracker::init(const vector<Predicate>& allConditionConf
                             childTracker->getLogTrackerIndex().end());
    }

    mUnSlicedPartCondition = evaluateCombinationCondition(mUnSlicedChildren, mLogicalOperation,
                                                          initialConditionCache);
    initialConditionCache[mIndex] =
            evaluateCombinationCondition(mChildren, mLogicalOperation, initialConditionCache);

    // unmark this node in the recursion stack.
    stack[mIndex] = false;

+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ public:

    bool init(const std::vector<Predicate>& allConditionConfig,
              const std::vector<sp<ConditionTracker>>& allConditionTrackers,
              const std::unordered_map<int64_t, int>& conditionIdIndexMap,
              std::vector<bool>& stack) override;
              const std::unordered_map<int64_t, int>& conditionIdIndexMap, std::vector<bool>& stack,
              std::vector<ConditionState>& initialConditionCache) override;

    void evaluateCondition(const LogEvent& event,
                           const std::vector<MatchingState>& eventMatcherValues,
+3 −1
Original line number Diff line number Diff line
@@ -51,10 +51,12 @@ public:
    //                       need to call init() on children conditions)
    // conditionIdIndexMap: the mapping from condition id to its index.
    // stack: a bit map to keep track which nodes have been visited on the stack in the recursion.
    // initialConditionCache: tracks initial conditions of all ConditionTrackers.
    virtual bool init(const std::vector<Predicate>& allConditionConfig,
                      const std::vector<sp<ConditionTracker>>& allConditionTrackers,
                      const std::unordered_map<int64_t, int>& conditionIdIndexMap,
                      std::vector<bool>& stack) = 0;
                      std::vector<bool>& stack,
                      std::vector<ConditionState>& initialConditionCache) = 0;

    // evaluate current condition given the new event.
    // event: the new log event
+3 −1
Original line number Diff line number Diff line
@@ -95,9 +95,11 @@ SimpleConditionTracker::~SimpleConditionTracker() {
bool SimpleConditionTracker::init(const vector<Predicate>& allConditionConfig,
                                  const vector<sp<ConditionTracker>>& allConditionTrackers,
                                  const unordered_map<int64_t, int>& conditionIdIndexMap,
                                  vector<bool>& stack) {
                                  vector<bool>& stack,
                                  vector<ConditionState>& initialConditionCache) {
    // SimpleConditionTracker does not have dependency on other conditions, thus we just return
    // if the initialization was successful.
    initialConditionCache[mIndex] = mInitialValue;
    return mInitialized;
}

+2 −2
Original line number Diff line number Diff line
@@ -37,8 +37,8 @@ public:

    bool init(const std::vector<Predicate>& allConditionConfig,
              const std::vector<sp<ConditionTracker>>& allConditionTrackers,
              const std::unordered_map<int64_t, int>& conditionIdIndexMap,
              std::vector<bool>& stack) override;
              const std::unordered_map<int64_t, int>& conditionIdIndexMap, std::vector<bool>& stack,
              std::vector<ConditionState>& initialConditionCache) override;

    void evaluateCondition(const LogEvent& event,
                           const std::vector<MatchingState>& eventMatcherValues,
Loading