Use StatEventParcel in libstatspull
Test: m -j128 libstatspull
Change-Id: Ice031f38cdde8a505a887359f6c0cb3312046929
diff --git a/libstats/pull/Android.bp b/libstats/pull/Android.bp
index 9772da1..72eb0e9 100644
--- a/libstats/pull/Android.bp
+++ b/libstats/pull/Android.bp
@@ -19,6 +19,9 @@
// ==========================================================
cc_library_shared {
name: "libstatspull",
+ aidl: {
+ include_dirs: ["frameworks/base/core/java"],
+ },
srcs: [
":statsd_aidl",
"stats_pull_atom_callback.cpp",
diff --git a/libstats/pull/stats_pull_atom_callback.cpp b/libstats/pull/stats_pull_atom_callback.cpp
index f61d646..011ab76 100644
--- a/libstats/pull/stats_pull_atom_callback.cpp
+++ b/libstats/pull/stats_pull_atom_callback.cpp
@@ -23,7 +23,7 @@
#include <android/os/BnPullAtomCallback.h>
#include <android/os/IPullAtomResultReceiver.h>
#include <android/os/IStatsManager.h>
-#include <android/util/StatsEvent.h>
+#include <android/util/StatsEventParcel.h>
#include <binder/IServiceManager.h>
#include "include/stats_pull_atom_callback.h"
@@ -56,9 +56,21 @@
const ::android::sp<::android::os::IPullAtomResultReceiver>& resultReceiver) override {
pulled_stats_event_list statsEventList;
bool success = (*mCallback)(atomTag, &statsEventList, mCookie);
- std::vector<android::util::StatsEvent> output;
- // TODO convert stats_event into parcelable stats_event.
- resultReceiver->pullFinished(atomTag, success, output);
+
+ // Convert stats_events into StatsEventParcels.
+ std::vector<android::util::StatsEventParcel> parcels;
+ for (int i = 0; i < statsEventList.data.size(); i++) {
+ size_t size;
+ uint8_t* buffer = stats_event_get_buffer(statsEventList.data[i], &size);
+
+ android::util::StatsEventParcel p;
+ // vector.assign() creates a copy, but this is inevitable unless
+ // stats_event.h/c uses a vector as opposed to a buffer.
+ p.buffer.assign(buffer, buffer + size);
+ parcels.push_back(std::move(p));
+ }
+
+ resultReceiver->pullFinished(atomTag, success, parcels);
for (int i = 0; i < statsEventList.data.size(); i++) {
stats_event_release(statsEventList.data[i]);
}