Adds client API for interacting with statsd.
This API will primarily be used by GmsCore to send updated configs.
Also, sending a config will implicitly notify the StatsD that this
client wants to know when it should request data for this config.
We send a broadcast so that all interested subscribers can know if
data needs to be pulled.
Test: Manually tested that sending broadcast works via new adb
command added in StatsService.
Change-Id: I23cdd1df706036e14b32c3d01af30c3d4af819fa
diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h
index 1d7e5a61..7991d82 100644
--- a/cmds/statsd/src/StatsService.h
+++ b/cmds/statsd/src/StatsService.h
@@ -71,20 +71,22 @@
virtual void OnLogEvent(const LogEvent& event);
/**
- * Binder call to force trigger pushLog. This would be called by callback
- * clients.
+ * Binder call for clients to request data for this configuration key.
*/
- virtual Status requestPush() override;
+ virtual Status getData(const String16& key, vector<uint8_t>* output) override;
/**
- * Pushes stats log entries from statsd to callback clients.
+ * Binder call to let clients send a configuration and indicate they're interested when they
+ * should requestData for this configuration.
*/
- Status pushLog(const vector<uint8_t>& log);
+ virtual Status addConfiguration(const String16& key, const vector <uint8_t>& config,
+ const String16& package, const String16& cls, bool* success)
+ override;
/**
- * Binder call to listen to statsd to send stats log entries.
+ * Binder call to allow clients to remove the specified configuration.
*/
- virtual Status subscribeStatsLog(const sp<IStatsCallbacks>& callbacks) override;
+ virtual Status removeConfiguration(const String16& key, bool* success) override;
// TODO: public for testing since statsd doesn't run when system starts. Change to private
// later.
@@ -120,6 +122,11 @@
void print_cmd_help(FILE* out);
/**
+ * Trigger a broadcast.
+ */
+ status_t cmd_trigger_broadcast(Vector<String8>& args);
+
+ /**
* Handle the config sub-command.
*/
status_t cmd_config(FILE* in, FILE* out, FILE* err, Vector<String8>& args);