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