public boolean deserializeContents()

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;
  }