in serializers/src/main/java/com/facebook/battery/serializer/composite/CompositeMetricsSerializer.java [75:99]
public boolean deserializeContents(CompositeMetrics metrics, DataInput input) throws IOException {
// First, reset the metrics object to expect all invalid metrics
SimpleArrayMap<Class<? extends SystemMetrics>, SystemMetrics> all = metrics.getMetrics();
for (int i = 0, size = metrics.getMetrics().size(); i < size; i++) {
metrics.setIsValid(all.keyAt(i), false);
}
int size = input.readInt();
for (int i = 0; i < size; i++) {
long tag = input.readLong();
SystemMetricsSerializer deserializer = mDeserializers.get(tag);
Class<? extends SystemMetrics> metricsClass = mDeserializerClasses.get(tag);
if (deserializer == null || metricsClass == null) {
return false;
}
SystemMetrics<? extends SystemMetrics<?>> metric = metrics.getMetric(metricsClass);
if (!deserializer.deserializeContents(metric, input)) {
return false;
}
metrics.setIsValid(metricsClass, true);
}
return true;
}