summaryrefslogtreecommitdiff
path: root/cmds/statsd/src/subscriber/IncidentdReporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/statsd/src/subscriber/IncidentdReporter.cpp')
-rw-r--r--cmds/statsd/src/subscriber/IncidentdReporter.cpp48
1 files changed, 15 insertions, 33 deletions
diff --git a/cmds/statsd/src/subscriber/IncidentdReporter.cpp b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
index ba5e66761528..1d77513d9d33 100644
--- a/cmds/statsd/src/subscriber/IncidentdReporter.cpp
+++ b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
@@ -21,10 +21,8 @@
#include "packages/UidMap.h"
#include "stats_log_util.h"
-#include <android/os/IIncidentManager.h>
-#include <android/os/IncidentReportArgs.h>
#include <android/util/ProtoOutputStream.h>
-#include <binder/IServiceManager.h>
+#include <incident/incident_report.h>
#include <vector>
@@ -51,7 +49,6 @@ const int FIELD_ID_TRIGGER_DETAILS = 4;
const int FIELD_ID_TRIGGER_DETAILS_TRIGGER_METRIC = 1;
const int FIELD_ID_METRIC_VALUE_METRIC_ID = 1;
const int FIELD_ID_METRIC_VALUE_DIMENSION_IN_WHAT = 2;
-const int FIELD_ID_METRIC_VALUE_DIMENSION_IN_CONDITION = 3;
const int FIELD_ID_METRIC_VALUE_VALUE = 4;
const int FIELD_ID_PACKAGE_INFO = 3;
@@ -83,10 +80,8 @@ void getProtoData(const int64_t& rule_id, int64_t metricId, const MetricDimensio
writeDimensionToProto(dimensionKey.getDimensionKeyInWhat(), nullptr, &headerProto);
headerProto.end(dimToken);
+ // deprecated field
// optional DimensionsValue dimension_in_condition = 3;
- dimToken = headerProto.start(FIELD_TYPE_MESSAGE | FIELD_ID_METRIC_VALUE_DIMENSION_IN_CONDITION);
- writeDimensionToProto(dimensionKey.getDimensionKeyInCondition(), nullptr, &headerProto);
- headerProto.end(dimToken);
// optional int64 value = 4;
headerProto.write(FIELD_TYPE_INT64 | FIELD_ID_METRIC_VALUE_VALUE, (long long)metricValue);
@@ -105,13 +100,6 @@ void getProtoData(const int64_t& rule_id, int64_t metricId, const MetricDimensio
}
}
- for (const auto& dim : dimensionKey.getDimensionKeyInCondition().getValues()) {
- int uid = getUidIfExists(dim);
- if (uid > 2000) {
- uids.insert(uid);
- }
- }
-
if (!uids.empty()) {
uint64_t token = headerProto.start(FIELD_TYPE_MESSAGE | FIELD_ID_PACKAGE_INFO);
UidMap::getInstance()->writeUidMapSnapshot(getElapsedRealtimeNs(), true, true, uids,
@@ -142,44 +130,38 @@ bool GenerateIncidentReport(const IncidentdDetails& config, int64_t rule_id, int
return false;
}
- IncidentReportArgs incidentReport;
+ AIncidentReportArgs* args = AIncidentReportArgs_init();
vector<uint8_t> protoData;
getProtoData(rule_id, metricId, dimensionKey, metricValue, configKey,
config.alert_description(), &protoData);
- incidentReport.addHeader(protoData);
+ AIncidentReportArgs_addHeader(args, protoData.data(), protoData.size());
for (int i = 0; i < config.section_size(); i++) {
- incidentReport.addSection(config.section(i));
+ AIncidentReportArgs_addSection(args, config.section(i));
}
uint8_t dest;
switch (config.dest()) {
case IncidentdDetails_Destination_AUTOMATIC:
- dest = android::os::PRIVACY_POLICY_AUTOMATIC;
+ dest = INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC;
break;
case IncidentdDetails_Destination_EXPLICIT:
- dest = android::os::PRIVACY_POLICY_EXPLICIT;
+ dest = INCIDENT_REPORT_PRIVACY_POLICY_EXPLICIT;
break;
default:
- dest = android::os::PRIVACY_POLICY_AUTOMATIC;
+ dest = INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC;
}
- incidentReport.setPrivacyPolicy(dest);
+ AIncidentReportArgs_setPrivacyPolicy(args, dest);
- incidentReport.setReceiverPkg(config.receiver_pkg());
+ AIncidentReportArgs_setReceiverPackage(args, config.receiver_pkg().c_str());
- incidentReport.setReceiverCls(config.receiver_cls());
+ AIncidentReportArgs_setReceiverClass(args, config.receiver_cls().c_str());
- sp<IIncidentManager> service = interface_cast<IIncidentManager>(
- defaultServiceManager()->getService(android::String16("incident")));
- if (service == nullptr) {
- ALOGW("Failed to fetch incident service.");
- return false;
- }
- VLOG("Calling incidentd %p", service.get());
- binder::Status s = service->reportIncident(incidentReport);
- VLOG("Report incident status: %s", s.toString8().string());
- return s.isOk();
+ int err = AIncidentReportArgs_takeReport(args);
+ AIncidentReportArgs_delete(args);
+
+ return err == NO_ERROR;
}
} // namespace statsd