SimpleLogMatchingTracker.cpp revision 9fc9edf95a308f5884bf541cac81ce1f41aba0ba
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 17caf339d004fad667748b68912c254df4e75cdc5aYao Chen#define DEBUG true // STOPSHIP if true 189fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato#include "Log.h" 19caf339d004fad667748b68912c254df4e75cdc5aYao Chen 20caf339d004fad667748b68912c254df4e75cdc5aYao Chen#include "SimpleLogMatchingTracker.h" 219fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato 22caf339d004fad667748b68912c254df4e75cdc5aYao Chen#include <log/logprint.h> 23caf339d004fad667748b68912c254df4e75cdc5aYao Chen 249fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace android { 259fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace os { 269fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onoratonamespace statsd { 279fc9edf95a308f5884bf541cac81ce1f41aba0baJoe Onorato 28caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::string; 29caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::unique_ptr; 30caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::unordered_map; 31caf339d004fad667748b68912c254df4e75cdc5aYao Chenusing std::vector; 32caf339d004fad667748b68912c254df4e75cdc5aYao Chen 33caf339d004fad667748b68912c254df4e75cdc5aYao Chen 34caf339d004fad667748b68912c254df4e75cdc5aYao ChenSimpleLogMatchingTracker::SimpleLogMatchingTracker(const string& name, const int index, 35caf339d004fad667748b68912c254df4e75cdc5aYao Chen const SimpleLogEntryMatcher& matcher) 36caf339d004fad667748b68912c254df4e75cdc5aYao Chen : LogMatchingTracker(name, index), mMatcher(matcher) { 37caf339d004fad667748b68912c254df4e75cdc5aYao Chen for (int i = 0; i < matcher.tag_size(); i++) { 38caf339d004fad667748b68912c254df4e75cdc5aYao Chen mTagIds.insert(matcher.tag(i)); 39caf339d004fad667748b68912c254df4e75cdc5aYao Chen } 40caf339d004fad667748b68912c254df4e75cdc5aYao Chen mInitialized = true; 41caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 42caf339d004fad667748b68912c254df4e75cdc5aYao Chen 43caf339d004fad667748b68912c254df4e75cdc5aYao ChenSimpleLogMatchingTracker::~SimpleLogMatchingTracker() { 44caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 45caf339d004fad667748b68912c254df4e75cdc5aYao Chen 46caf339d004fad667748b68912c254df4e75cdc5aYao Chenbool SimpleLogMatchingTracker::init(const vector<LogEntryMatcher>& 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. 51caf339d004fad667748b68912c254df4e75cdc5aYao Chen return true; 52caf339d004fad667748b68912c254df4e75cdc5aYao Chen} 53caf339d004fad667748b68912c254df4e75cdc5aYao Chen 54caf339d004fad667748b68912c254df4e75cdc5aYao Chenvoid SimpleLogMatchingTracker::onLogEvent(const LogEventWrapper& 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 62caf339d004fad667748b68912c254df4e75cdc5aYao Chen if (mTagIds.find(event.tagId) == 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