/* * Copyright 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ package org.webrtc; import java.util.Map; /** * Java version of webrtc::RTCStatsReport. Each RTCStatsReport produced by * getStats contains multiple RTCStats objects; one for each underlying object * (codec, stream, transport, etc.) that was inspected to produce the stats. */ public class RTCStatsReport { private final long timestampUs; private final Map stats; public RTCStatsReport(long timestampUs, Map stats) { this.timestampUs = timestampUs; this.stats = stats; } // Timestamp in microseconds. public double getTimestampUs() { return timestampUs; } // Map of stats object IDs to stats objects. Can be used to easily look up // other stats objects, when they refer to each other by ID. public Map getStatsMap() { return stats; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("{ timestampUs: ").append(timestampUs).append(", stats: [\n"); boolean first = true; for (RTCStats stat : stats.values()) { if (!first) { builder.append(",\n"); } builder.append(stat); first = false; } builder.append(" ] }"); return builder.toString(); } // TODO(bugs.webrtc.org/8557) Use ctor directly with full Map type. @SuppressWarnings("unchecked") @CalledByNative private static RTCStatsReport create(long timestampUs, Map stats) { return new RTCStatsReport(timestampUs, stats); } }