org.webrtc.RTCStatsReport Maven / Gradle / Ivy
/*
* 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);
}
}