diff options
author | Muhammad Qureshi <muhammadq@google.com> | 2019-04-05 10:10:40 -0700 |
---|---|---|
committer | Muhammad Qureshi <muhammadq@google.com> | 2019-04-30 07:35:24 -0700 |
commit | 844694bc5dd9ef6a6d52389fa42c3a7bba6470e8 (patch) | |
tree | bc774a698e4013cb150bdc35d2a29ba2a87078ab /cmds/statsd/src/metrics/MetricsManager.cpp | |
parent | fa2e9939d2f8be32f7ec12117e3b3e510bd27db4 (diff) |
Save EventActivations to disk
Also:
- rename time_to_live to ttl
- rename activation_ns to start_ns
Bug: 129719662
Fixes: 129719662
Test: statsd_test
Change-Id: I4069f85d0c1f5bd0885a9588d8a9157d94b2c587
Diffstat (limited to 'cmds/statsd/src/metrics/MetricsManager.cpp')
-rw-r--r-- | cmds/statsd/src/metrics/MetricsManager.cpp | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp index 6a55289bc8a2..947f37782fcc 100644 --- a/cmds/statsd/src/metrics/MetricsManager.cpp +++ b/cmds/statsd/src/metrics/MetricsManager.cpp @@ -54,6 +54,11 @@ const int FIELD_ID_ANNOTATIONS = 7; const int FIELD_ID_ANNOTATIONS_INT64 = 1; const int FIELD_ID_ANNOTATIONS_INT32 = 2; +// for ActiveConfig +const int FIELD_ID_ACTIVE_CONFIG_ID = 1; +const int FIELD_ID_ACTIVE_CONFIG_UID = 2; +const int FIELD_ID_ACTIVE_CONFIG_METRIC = 3; + MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, const int64_t timeBaseNs, const int64_t currentTimeNs, const sp<UidMap>& uidMap, @@ -503,25 +508,41 @@ size_t MetricsManager::byteSize() { return totalSize; } -void MetricsManager::setActiveMetrics(ActiveConfig config, int64_t currentTimeNs) { - if (config.active_metric_size() == 0) { +void MetricsManager::loadActiveConfig(const ActiveConfig& config, int64_t currentTimeNs) { + if (config.metric_size() == 0) { ALOGW("No active metric for config %s", mConfigKey.ToString().c_str()); return; } - for (int i = 0; i < config.active_metric_size(); i++) { - for (int metric : mMetricIndexesWithActivation) { - if (mAllMetricProducers[metric]->getMetricId() == config.active_metric(i).metric_id()) { - VLOG("Setting active metric: %lld", - (long long)mAllMetricProducers[metric]->getMetricId()); - mAllMetricProducers[metric]->setActive( - currentTimeNs, config.active_metric(i).time_to_live_nanos()); - mIsActive = true; + for (int i = 0; i < config.metric_size(); i++) { + const auto& activeMetric = config.metric(i); + for (int metricIndex : mMetricIndexesWithActivation) { + const auto& metric = mAllMetricProducers[metricIndex]; + if (metric->getMetricId() == activeMetric.id()) { + VLOG("Setting active metric: %lld", (long long)metric->getMetricId()); + metric->loadActiveMetric(activeMetric, currentTimeNs); + mIsActive |= metric->isActive(); } } } } +void MetricsManager::writeActiveConfigToProtoOutputStream( + int64_t currentTimeNs, ProtoOutputStream* proto) { + proto->write(FIELD_TYPE_INT64 | FIELD_ID_ACTIVE_CONFIG_ID, (long long)mConfigKey.GetId()); + proto->write(FIELD_TYPE_INT32 | FIELD_ID_ACTIVE_CONFIG_UID, mConfigKey.GetUid()); + for (int metricIndex : mMetricIndexesWithActivation) { + const auto& metric = mAllMetricProducers[metricIndex]; + const uint64_t metricToken = proto->start(FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | + FIELD_ID_ACTIVE_CONFIG_METRIC); + metric->writeActiveMetricToProtoOutputStream(currentTimeNs, proto); + proto->end(metricToken); + } +} + + + + } // namespace statsd } // namespace os } // namespace android |