StatsLogProcessor.h revision de70169109c57787a23c732ec4b361ade2e9850e
1ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen/* 2ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * Copyright (C) 2017 The Android Open Source Project 3ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * 4ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * you may not use this file except in compliance with the License. 6ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * You may obtain a copy of the License at 7ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * 8ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * http://www.apache.org/licenses/LICENSE-2.0 9ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * 10ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * Unless required by applicable law or agreed to in writing, software 11ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * distributed under the License is distributed on an "AS IS" BASIS, 12ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * See the License for the specific language governing permissions and 14ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen * limitations under the License. 15ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen */ 16ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen#ifndef STATS_LOG_PROCESSOR_H 17ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen#define STATS_LOG_PROCESSOR_H 18ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen 1944cf27c14880005df093f372491c593e1a9a3c58Yao Chen#include "DropboxWriter.h" 2044cf27c14880005df093f372491c593e1a9a3c58Yao Chen#include "LogReader.h" 21caf339d004fad667748b68912c254df4e75cdc5aYao Chen#include "frameworks/base/cmds/statsd/src/statsd_config.pb.h" 2244cf27c14880005df093f372491c593e1a9a3c58Yao Chen#include "metrics/MetricsManager.h" 23caf339d004fad667748b68912c254df4e75cdc5aYao Chen#include "stats_util.h" 24de70169109c57787a23c732ec4b361ade2e9850eDavid Chen#include "UidMap.h" 25ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen 2644cf27c14880005df093f372491c593e1a9a3c58Yao Chen#include <log/logprint.h> 2744cf27c14880005df093f372491c593e1a9a3c58Yao Chen#include <stdio.h> 280656b7a158f6f71989e76ba55423217e3e75d8b4David Chen#include <unordered_map> 290656b7a158f6f71989e76ba55423217e3e75d8b4David Chen 30906a35c814817c8bd503c3f4df8af9a2f622169dBookatznamespace android { 31906a35c814817c8bd503c3f4df8af9a2f622169dBookatznamespace os { 32906a35c814817c8bd503c3f4df8af9a2f622169dBookatznamespace statsd { 33ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen 34ef99c4fa23b42fe6e58db706b9f4780018b6bf3eYao Chenclass StatsLogProcessor : public LogListener { 35ab273e2e13f87d57f66395c52df424710b8066e1Yao Chenpublic: 36de70169109c57787a23c732ec4b361ade2e9850eDavid Chen StatsLogProcessor(const sp<UidMap> &uidMap); 37ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen virtual ~StatsLogProcessor(); 38ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen 39ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen virtual void OnLogEvent(const log_msg& msg); 40ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen 4144cf27c14880005df093f372491c593e1a9a3c58Yao Chen void UpdateConfig(const int config_source, const StatsdConfig& config); 420656b7a158f6f71989e76ba55423217e3e75d8b4David Chen 43ab273e2e13f87d57f66395c52df424710b8066e1Yao Chenprivate: 4444cf27c14880005df093f372491c593e1a9a3c58Yao Chen // TODO: use EventMetrics to log the events. 45ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen DropboxWriter m_dropbox_writer; 460656b7a158f6f71989e76ba55423217e3e75d8b4David Chen 4744cf27c14880005df093f372491c593e1a9a3c58Yao Chen std::unordered_map<int, std::unique_ptr<MetricsManager>> mMetricsManagers; 48de70169109c57787a23c732ec4b361ade2e9850eDavid Chen 49de70169109c57787a23c732ec4b361ade2e9850eDavid Chen sp<UidMap> m_UidMap; // Reference to the UidMap to lookup app name and version for each uid. 50ab273e2e13f87d57f66395c52df424710b8066e1Yao Chen}; 51906a35c814817c8bd503c3f4df8af9a2f622169dBookatz 52ef99c4fa23b42fe6e58db706b9f4780018b6bf3eYao Chen} // namespace statsd 53ef99c4fa23b42fe6e58db706b9f4780018b6bf3eYao Chen} // namespace os 54ef99c4fa23b42fe6e58db706b9f4780018b6bf3eYao Chen} // namespace android 55906a35c814817c8bd503c3f4df8af9a2f622169dBookatz 56ef99c4fa23b42fe6e58db706b9f4780018b6bf3eYao Chen#endif // STATS_LOG_PROCESSOR_H 57