Loading cmds/statsd/src/StatsService.cpp +6 −16 Original line number Diff line number Diff line Loading @@ -1059,36 +1059,26 @@ void StatsService::OnLogEvent(LogEvent* event) { } } Status StatsService::getData(int64_t key, const int32_t callingUid, vector<int8_t>* output) { Status StatsService::getData(int64_t key, const int32_t callingUid, vector<uint8_t>* output) { ENFORCE_UID(AID_SYSTEM); VLOG("StatsService::getData with Uid %i", callingUid); ConfigKey configKey(callingUid, key); // TODO(b/149254662): Since libbinder_ndk uses int8_t instead of uint8_t, // there are inconsistencies with internal statsd logic. Instead of // modifying lots of files, we create a temporary output array of int8_t and // copy its data into output. This is a bad hack, but hopefully // libbinder_ndk will transition to using uint8_t soon: progress is tracked // in b/144957764. Same applies to StatsService::getMetadata. vector<uint8_t> unsignedOutput; // The dump latency does not matter here since we do not include the current bucket, we do not // need to pull any new data anyhow. mProcessor->onDumpReport(configKey, getElapsedRealtimeNs(), false /* include_current_bucket*/, true /* erase_data */, GET_DATA_CALLED, FAST, &unsignedOutput); *output = vector<int8_t>(unsignedOutput.begin(), unsignedOutput.end()); true /* erase_data */, GET_DATA_CALLED, FAST, output); return Status::ok(); } Status StatsService::getMetadata(vector<int8_t>* output) { Status StatsService::getMetadata(vector<uint8_t>* output) { ENFORCE_UID(AID_SYSTEM); vector<uint8_t> unsignedOutput; StatsdStats::getInstance().dumpStats(&unsignedOutput, false); // Don't reset the counters. *output = vector<int8_t>(unsignedOutput.begin(), unsignedOutput.end()); StatsdStats::getInstance().dumpStats(output, false); // Don't reset the counters. return Status::ok(); } Status StatsService::addConfiguration(int64_t key, const vector <int8_t>& config, Status StatsService::addConfiguration(int64_t key, const vector <uint8_t>& config, const int32_t callingUid) { ENFORCE_UID(AID_SYSTEM); Loading @@ -1099,7 +1089,7 @@ Status StatsService::addConfiguration(int64_t key, const vector <int8_t>& config } } bool StatsService::addConfigurationChecked(int uid, int64_t key, const vector<int8_t>& config) { bool StatsService::addConfigurationChecked(int uid, int64_t key, const vector<uint8_t>& config) { ConfigKey configKey(uid, key); StatsdConfig cfg; if (config.size() > 0) { // If the config is empty, skip parsing. Loading cmds/statsd/src/StatsService.h +4 −4 Original line number Diff line number Diff line Loading @@ -94,13 +94,13 @@ public: */ virtual Status getData(int64_t key, const int32_t callingUid, vector<int8_t>* output) override; vector<uint8_t>* output) override; /** * Binder call for clients to get metadata across all configs in statsd. */ virtual Status getMetadata(vector<int8_t>* output) override; virtual Status getMetadata(vector<uint8_t>* output) override; /** Loading @@ -108,7 +108,7 @@ public: * should requestData for this configuration. */ virtual Status addConfiguration(int64_t key, const vector<int8_t>& config, const vector<uint8_t>& config, const int32_t callingUid) override; /** Loading Loading @@ -318,7 +318,7 @@ private: /** * Adds a configuration after checking permissions and obtaining UID from binder call. */ bool addConfigurationChecked(int uid, int64_t key, const vector<int8_t>& config); bool addConfigurationChecked(int uid, int64_t key, const vector<uint8_t>& config); /** * Update a configuration. Loading cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ const int kCallingUid = 0; // Randomly chosen void SendConfig(shared_ptr<StatsService>& service, const StatsdConfig& config) { string str; config.SerializeToString(&str); std::vector<int8_t> configAsVec(str.begin(), str.end()); std::vector<uint8_t> configAsVec(str.begin(), str.end()); service->addConfiguration(kConfigKey, configAsVec, kCallingUid); } Loading Loading
cmds/statsd/src/StatsService.cpp +6 −16 Original line number Diff line number Diff line Loading @@ -1059,36 +1059,26 @@ void StatsService::OnLogEvent(LogEvent* event) { } } Status StatsService::getData(int64_t key, const int32_t callingUid, vector<int8_t>* output) { Status StatsService::getData(int64_t key, const int32_t callingUid, vector<uint8_t>* output) { ENFORCE_UID(AID_SYSTEM); VLOG("StatsService::getData with Uid %i", callingUid); ConfigKey configKey(callingUid, key); // TODO(b/149254662): Since libbinder_ndk uses int8_t instead of uint8_t, // there are inconsistencies with internal statsd logic. Instead of // modifying lots of files, we create a temporary output array of int8_t and // copy its data into output. This is a bad hack, but hopefully // libbinder_ndk will transition to using uint8_t soon: progress is tracked // in b/144957764. Same applies to StatsService::getMetadata. vector<uint8_t> unsignedOutput; // The dump latency does not matter here since we do not include the current bucket, we do not // need to pull any new data anyhow. mProcessor->onDumpReport(configKey, getElapsedRealtimeNs(), false /* include_current_bucket*/, true /* erase_data */, GET_DATA_CALLED, FAST, &unsignedOutput); *output = vector<int8_t>(unsignedOutput.begin(), unsignedOutput.end()); true /* erase_data */, GET_DATA_CALLED, FAST, output); return Status::ok(); } Status StatsService::getMetadata(vector<int8_t>* output) { Status StatsService::getMetadata(vector<uint8_t>* output) { ENFORCE_UID(AID_SYSTEM); vector<uint8_t> unsignedOutput; StatsdStats::getInstance().dumpStats(&unsignedOutput, false); // Don't reset the counters. *output = vector<int8_t>(unsignedOutput.begin(), unsignedOutput.end()); StatsdStats::getInstance().dumpStats(output, false); // Don't reset the counters. return Status::ok(); } Status StatsService::addConfiguration(int64_t key, const vector <int8_t>& config, Status StatsService::addConfiguration(int64_t key, const vector <uint8_t>& config, const int32_t callingUid) { ENFORCE_UID(AID_SYSTEM); Loading @@ -1099,7 +1089,7 @@ Status StatsService::addConfiguration(int64_t key, const vector <int8_t>& config } } bool StatsService::addConfigurationChecked(int uid, int64_t key, const vector<int8_t>& config) { bool StatsService::addConfigurationChecked(int uid, int64_t key, const vector<uint8_t>& config) { ConfigKey configKey(uid, key); StatsdConfig cfg; if (config.size() > 0) { // If the config is empty, skip parsing. Loading
cmds/statsd/src/StatsService.h +4 −4 Original line number Diff line number Diff line Loading @@ -94,13 +94,13 @@ public: */ virtual Status getData(int64_t key, const int32_t callingUid, vector<int8_t>* output) override; vector<uint8_t>* output) override; /** * Binder call for clients to get metadata across all configs in statsd. */ virtual Status getMetadata(vector<int8_t>* output) override; virtual Status getMetadata(vector<uint8_t>* output) override; /** Loading @@ -108,7 +108,7 @@ public: * should requestData for this configuration. */ virtual Status addConfiguration(int64_t key, const vector<int8_t>& config, const vector<uint8_t>& config, const int32_t callingUid) override; /** Loading Loading @@ -318,7 +318,7 @@ private: /** * Adds a configuration after checking permissions and obtaining UID from binder call. */ bool addConfigurationChecked(int uid, int64_t key, const vector<int8_t>& config); bool addConfigurationChecked(int uid, int64_t key, const vector<uint8_t>& config); /** * Update a configuration. Loading
cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ const int kCallingUid = 0; // Randomly chosen void SendConfig(shared_ptr<StatsService>& service, const StatsdConfig& config) { string str; config.SerializeToString(&str); std::vector<int8_t> configAsVec(str.begin(), str.end()); std::vector<uint8_t> configAsVec(str.begin(), str.end()); service->addConfiguration(kConfigKey, configAsVec, kCallingUid); } Loading