SimpleLogMatchingTracker.cpp revision b8c9aa8c9ccba4e64759c177381b742ca99a5487
1caf339d004fad667748b68912c254df4e75cdc5aYao Chen/* 2caf339d004fad667748b68912c254df4e75cdc5aYao Chen * Copyright (C) 2017 The Android Open Source Project 3caf339d004fad667748b68912c254df4e75cdc5aYao Chen * 4caf339d004fad667748b68912c254df4e75cdc5aYao Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5caf339d004fad667748b68912c254df4e75cdc5aYao Chen * you may not use this file except in compliance with the License. 6caf339d004fad667748b68912c254df4e75cdc5aYao Chen * You may obtain a copy of the License at 7caf339d004fad667748b68912c254df4e75cdc5aYao Chen * 8caf339d004fad667748b68912c254df4e75cdc5aYao Chen * http://www.apache.org/licenses/LICENSE-2.0 9caf339d004fad667748b68912c254df4e75cdc5aYao Chen * 10caf339d004fad667748b68912c254df4e75cdc5aYao Chen * Unless required by applicable law or agreed to in writing, software 11caf339d004fad667748b68912c254df4e75cdc5aYao Chen * distributed under the License is distributed on an "AS IS" BASIS, 12caf339d004fad667748b68912c254df4e75cdc5aYao Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13caf339d004fad667748b68912c254df4e75cdc5aYao Chen * See the License for the specific language governing permissions and 14caf339d004fad667748b68912c254df4e75cdc5aYao Chen * limitations under the License. 15caf339d004fad667748b68912c254df4e75cdc5aYao Chen */ 16caf339d004fad667748b68912c254df4e75cdc5aYao Chen 17729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen#define DEBUG false // STOPSHIP if true 189fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato#include "Log.h" 19caf339d004fad667748b68912c254df4e75cdc5aYao Chen 20caf339d004fad667748b68912c254df4e75cdc5aYao Chen#include "SimpleLogMatchingTracker.h" 219fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato 229fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace android { 239fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace os { 249fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace statsd { 259fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato 26caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::string; 27caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::unique_ptr; 28caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::unordered_map; 29caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::vector; 30caf339d004fad667748b68912c254df4e75cdc5aYao Chen 31caf339d004fad667748b68912c254df4e75cdc5aYao Chen 32caf339d004fad667748b68912c254df4e75cdc5aYao ChenSimpleLogMatchingTracker::SimpleLogMatchingTracker(const string& name, const int index, 33b8c9aa8c9ccba4e64759c177381b742ca99a5487Stefan Lafon const SimpleAtomMatcher& matcher) 34caf339d004fad667748b68912c254df4e75cdc5aYao Chen : LogMatchingTracker(name, index), mMatcher(matcher) { 35729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen if (!matcher.has_tag()) { 36729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen mInitialized = false; 37729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen } else { 38729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen mTagIds.insert(matcher.tag()); 39729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen mInitialized = true; 40caf339d004fad667748b68912c254df4e75cdc5aYao Chen } 41caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 42caf339d004fad667748b68912c254df4e75cdc5aYao Chen 43caf339d004fad667748b68912c254df4e75cdc5aYao ChenSimpleLogMatchingTracker::~SimpleLogMatchingTracker() { 44caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 45caf339d004fad667748b68912c254df4e75cdc5aYao Chen 46b8c9aa8c9ccba4e64759c177381b742ca99a5487Stefan Lafonbool SimpleLogMatchingTracker::init(const vector<AtomMatcher>& allLogMatchers, 47caf339d004fad667748b68912c254df4e75cdc5aYao Chen const vector<sp<LogMatchingTracker>>& allTrackers, 48caf339d004fad667748b68912c254df4e75cdc5aYao Chen const unordered_map<string, int>& matcherMap, 49caf339d004fad667748b68912c254df4e75cdc5aYao Chen vector<bool>& stack) { 50caf339d004fad667748b68912c254df4e75cdc5aYao Chen // no need to do anything. 51729093df0dd7d7038ad43b16ecdb59a1404f3b50Yao Chen return mInitialized; 52caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 53caf339d004fad667748b68912c254df4e75cdc5aYao Chen 54c4dfae56c10a1dd571baa78c750f2e68c919d74fJoe Onoratovoid SimpleLogMatchingTracker::onLogEvent(const LogEvent& event, 55caf339d004fad667748b68912c254df4e75cdc5aYao Chen const vector<sp<LogMatchingTracker>>& allTrackers, 56caf339d004fad667748b68912c254df4e75cdc5aYao Chen vector<MatchingState>& matcherResults) { 57caf339d004fad667748b68912c254df4e75cdc5aYao Chen if (matcherResults[mIndex] != MatchingState::kNotComputed) { 58caf339d004fad667748b68912c254df4e75cdc5aYao Chen VLOG("Matcher %s already evaluated ", mName.c_str()); 59caf339d004fad667748b68912c254df4e75cdc5aYao Chen return; 60caf339d004fad667748b68912c254df4e75cdc5aYao Chen } 61caf339d004fad667748b68912c254df4e75cdc5aYao Chen 62c4dfae56c10a1dd571baa78c750f2e68c919d74fJoe Onorato if (mTagIds.find(event.GetTagId()) == mTagIds.end()) { 63caf339d004fad667748b68912c254df4e75cdc5aYao Chen matcherResults[mIndex] = MatchingState::kNotMatched; 64caf339d004fad667748b68912c254df4e75cdc5aYao Chen return; 65caf339d004fad667748b68912c254df4e75cdc5aYao Chen } 66caf339d004fad667748b68912c254df4e75cdc5aYao Chen 67caf339d004fad667748b68912c254df4e75cdc5aYao Chen bool matched = matchesSimple(mMatcher, event); 68caf339d004fad667748b68912c254df4e75cdc5aYao Chen matcherResults[mIndex] = matched ? MatchingState::kMatched : MatchingState::kNotMatched; 69caf339d004fad667748b68912c254df4e75cdc5aYao Chen VLOG("Stats SimpleLogMatcher %s matched? %d", mName.c_str(), matched); 70caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 71caf339d004fad667748b68912c254df4e75cdc5aYao Chen 72caf339d004fad667748b68912c254df4e75cdc5aYao Chen} // namespace statsd 73caf339d004fad667748b68912c254df4e75cdc5aYao Chen} // namespace os 74caf339d004fad667748b68912c254df4e75cdc5aYao Chen} // namespace android 75