| /* |
| * 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<String, RTCStats> stats; |
| |
| public RTCStatsReport(long timestampUs, Map<String, RTCStats> 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<String, RTCStats> 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); |
| } |
| } |