Migrate all remaining MetricProducers to use ProtoOutputStream

Test: statsd, statsd_test
Change-Id: I1087e1c1ffb372ca288dfc575cb7a372b11ce8c5
diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h
index 6ba726f4..7ac97a8 100644
--- a/cmds/statsd/src/metrics/MetricProducer.h
+++ b/cmds/statsd/src/metrics/MetricProducer.h
@@ -59,6 +59,8 @@
     // coming. MetricProducer should do the clean up, and dump existing data to dropbox.
     virtual void finish() = 0;
 
+    // TODO: Pass a timestamp as a parameter in onDumpReport and update all its
+    // implementations.
     virtual StatsLogReport onDumpReport() = 0;
 
     virtual bool isConditionSliced() const {
@@ -109,6 +111,14 @@
             const size_t matcherIndex, const HashableDimensionKey& eventKey,
             const std::map<std::string, HashableDimensionKey>& conditionKey, bool condition,
             const LogEvent& event, bool scheduledPull) = 0;
+
+    std::unique_ptr<android::util::ProtoOutputStream> mProto;
+
+    long long mProtoToken;
+
+    virtual void startNewProtoOutputStream(long long timestamp) = 0;
+
+    std::unique_ptr<uint8_t[]> serializeProto();
 };
 
 }  // namespace statsd