Merge "Adds a code when statsd sends intent to getData." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
17d2de09cb
@@ -485,6 +485,15 @@ void StatsLogProcessor::informPullAlarmFired(const int64_t timestampNs) {
|
|||||||
mStatsPullerManager.OnAlarmFired(timestampNs);
|
mStatsPullerManager.OnAlarmFired(timestampNs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t StatsLogProcessor::getLastReportTimeNs(const ConfigKey& key) {
|
||||||
|
auto it = mMetricsManagers.find(key);
|
||||||
|
if (it == mMetricsManagers.end()) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return it->second->getLastReportTimeNs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace statsd
|
} // namespace statsd
|
||||||
} // namespace os
|
} // namespace os
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ public:
|
|||||||
|
|
||||||
void informPullAlarmFired(const int64_t timestampNs);
|
void informPullAlarmFired(const int64_t timestampNs);
|
||||||
|
|
||||||
|
int64_t getLastReportTimeNs(const ConfigKey& key);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// For testing only.
|
// For testing only.
|
||||||
inline sp<AlarmMonitor> getAnomalyAlarmMonitor() const {
|
inline sp<AlarmMonitor> getAnomalyAlarmMonitor() const {
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ StatsService::StatsService(const sp<Looper>& handlerLooper)
|
|||||||
VLOG("Statscompanion could not find a broadcast receiver for %s",
|
VLOG("Statscompanion could not find a broadcast receiver for %s",
|
||||||
key.ToString().c_str());
|
key.ToString().c_str());
|
||||||
} else {
|
} else {
|
||||||
sc->sendDataBroadcast(receiver);
|
sc->sendDataBroadcast(receiver, mProcessor->getLastReportTimeNs(key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -377,14 +377,15 @@ status_t StatsService::cmd_trigger_broadcast(FILE* out, Vector<String8>& args) {
|
|||||||
print_cmd_help(out);
|
print_cmd_help(out);
|
||||||
return UNKNOWN_ERROR;
|
return UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
auto receiver = mConfigManager->GetConfigReceiver(ConfigKey(uid, StrToInt64(name)));
|
ConfigKey key(uid, StrToInt64(name));
|
||||||
|
auto receiver = mConfigManager->GetConfigReceiver(key);
|
||||||
sp<IStatsCompanionService> sc = getStatsCompanionService();
|
sp<IStatsCompanionService> sc = getStatsCompanionService();
|
||||||
if (sc == nullptr) {
|
if (sc == nullptr) {
|
||||||
VLOG("Could not access statsCompanion");
|
VLOG("Could not access statsCompanion");
|
||||||
} else if (receiver == nullptr) {
|
} else if (receiver == nullptr) {
|
||||||
VLOG("Could not find receiver for %s, %s", args[1].c_str(), args[2].c_str())
|
VLOG("Could not find receiver for %s, %s", args[1].c_str(), args[2].c_str())
|
||||||
} else {
|
} else {
|
||||||
sc->sendDataBroadcast(receiver);
|
sc->sendDataBroadcast(receiver, mProcessor->getLastReportTimeNs(key));
|
||||||
VLOG("StatsService::trigger broadcast succeeded to %s, %s", args[1].c_str(),
|
VLOG("StatsService::trigger broadcast succeeded to %s, %s", args[1].c_str(),
|
||||||
args[2].c_str());
|
args[2].c_str());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ interface IStatsCompanionService {
|
|||||||
StatsLogEventWrapper[] pullData(int pullCode);
|
StatsLogEventWrapper[] pullData(int pullCode);
|
||||||
|
|
||||||
/** Send a broadcast to the specified PendingIntent's as IBinder that it should getData now. */
|
/** Send a broadcast to the specified PendingIntent's as IBinder that it should getData now. */
|
||||||
oneway void sendDataBroadcast(in IBinder intentSender);
|
oneway void sendDataBroadcast(in IBinder intentSender, long lastReportTimeNs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests StatsCompanionService to send a broadcast using the given intentSender
|
* Requests StatsCompanionService to send a broadcast using the given intentSender
|
||||||
|
|||||||
@@ -107,6 +107,15 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
|||||||
|
|
||||||
public static final int CODE_DATA_BROADCAST = 1;
|
public static final int CODE_DATA_BROADCAST = 1;
|
||||||
public static final int CODE_SUBSCRIBER_BROADCAST = 1;
|
public static final int CODE_SUBSCRIBER_BROADCAST = 1;
|
||||||
|
/**
|
||||||
|
* The last report time is provided with each intent registered to
|
||||||
|
* StatsManager#setFetchReportsOperation. This allows easy de-duping in the receiver if
|
||||||
|
* statsd is requesting the client to retrieve the same statsd data. The last report time
|
||||||
|
* corresponds to the last_report_elapsed_nanos that will provided in the current
|
||||||
|
* ConfigMetricsReport, and this timestamp also corresponds to the
|
||||||
|
* current_report_elapsed_nanos of the most recently obtained ConfigMetricsReport.
|
||||||
|
*/
|
||||||
|
public static final String EXTRA_LAST_REPORT_TIME = "android.app.extra.LAST_REPORT_TIME";
|
||||||
public static final int DEATH_THRESHOLD = 10;
|
public static final int DEATH_THRESHOLD = 10;
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
@@ -197,10 +206,11 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendDataBroadcast(IBinder intentSenderBinder) {
|
public void sendDataBroadcast(IBinder intentSenderBinder, long lastReportTimeNs) {
|
||||||
enforceCallingPermission();
|
enforceCallingPermission();
|
||||||
IntentSender intentSender = new IntentSender(intentSenderBinder);
|
IntentSender intentSender = new IntentSender(intentSenderBinder);
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
|
intent.putExtra(EXTRA_LAST_REPORT_TIME, lastReportTimeNs);
|
||||||
try {
|
try {
|
||||||
intentSender.sendIntent(mContext, CODE_DATA_BROADCAST, intent, null, null);
|
intentSender.sendIntent(mContext, CODE_DATA_BROADCAST, intent, null, null);
|
||||||
} catch (IntentSender.SendIntentException e) {
|
} catch (IntentSender.SendIntentException e) {
|
||||||
@@ -274,7 +284,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
|||||||
// Add in all the apps for every user/profile.
|
// Add in all the apps for every user/profile.
|
||||||
for (UserInfo profile : users) {
|
for (UserInfo profile : users) {
|
||||||
List<PackageInfo> pi =
|
List<PackageInfo> pi =
|
||||||
pm.getInstalledPackagesAsUser(PackageManager.MATCH_DISABLED_COMPONENTS, profile.id);
|
pm.getInstalledPackagesAsUser(PackageManager.MATCH_KNOWN_PACKAGES, profile.id);
|
||||||
for (int j = 0; j < pi.size(); j++) {
|
for (int j = 0; j < pi.size(); j++) {
|
||||||
if (pi.get(j).applicationInfo != null) {
|
if (pi.get(j).applicationInfo != null) {
|
||||||
uids.add(pi.get(j).applicationInfo.uid);
|
uids.add(pi.get(j).applicationInfo.uid);
|
||||||
|
|||||||
Reference in New Issue
Block a user