mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-18 08:07:56 +01:00

Bug: webrtc:8278 Change-Id: I183cec54ec3e97894db7f26e365eb9941a1ab458 Reviewed-on: https://webrtc-review.googlesource.com/25660 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20879}
113 lines
3.5 KiB
Java
113 lines
3.5 KiB
Java
/*
|
|
* 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::RTCStats. Represents an RTCStats object, as
|
|
* described in https://w3c.github.io/webrtc-stats/. The |id|, |timestampUs|
|
|
* and |type| accessors have the same meaning for this class as for the
|
|
* RTCStats dictionary. 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 RTCStats {
|
|
private final long timestampUs;
|
|
private final String type;
|
|
private final String id;
|
|
private final Map<String, Object> members;
|
|
|
|
public RTCStats(long timestampUs, String type, String id, Map<String, Object> members) {
|
|
this.timestampUs = timestampUs;
|
|
this.type = type;
|
|
this.id = id;
|
|
this.members = members;
|
|
}
|
|
|
|
// Timestamp in microseconds.
|
|
public double getTimestampUs() {
|
|
return timestampUs;
|
|
}
|
|
|
|
// Equivalent to RTCStatsType in the stats spec. Indicates the type of the
|
|
// object that was inspected to produce the stats.
|
|
public String getType() {
|
|
return type;
|
|
}
|
|
|
|
// Unique ID representing this stats object. May be referred to by members of
|
|
// other stats objects.
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
/**
|
|
* Returns map of member names to values. Returns as an ordered map so that
|
|
* the stats object can be serialized with a consistent ordering.
|
|
*
|
|
* Values will be one of the following objects:
|
|
* - Boolean
|
|
* - Integer (for 32-bit signed integers)
|
|
* - Long (for 32-bit unsigned and 64-bit signed integers)
|
|
* - BigInteger (for 64-bit unsigned integers)
|
|
* - Double
|
|
* - String
|
|
* - The array form of any of the above (e.g., Integer[])
|
|
*/
|
|
public Map<String, Object> getMembers() {
|
|
return members;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
StringBuilder builder = new StringBuilder();
|
|
builder.append("{ timestampUs: ")
|
|
.append(timestampUs)
|
|
.append(", type: ")
|
|
.append(type)
|
|
.append(", id: ")
|
|
.append(id);
|
|
boolean first = true;
|
|
for (Map.Entry<String, Object> entry : members.entrySet()) {
|
|
builder.append(", ").append(entry.getKey()).append(": ");
|
|
appendValue(builder, entry.getValue());
|
|
}
|
|
builder.append(" }");
|
|
return builder.toString();
|
|
}
|
|
|
|
private static void appendValue(StringBuilder builder, Object value) {
|
|
if (value instanceof Object[]) {
|
|
Object[] arrayValue = (Object[]) value;
|
|
builder.append('[');
|
|
for (int i = 0; i < arrayValue.length; ++i) {
|
|
if (i != 0) {
|
|
builder.append(", ");
|
|
}
|
|
appendValue(builder, arrayValue[i]);
|
|
}
|
|
builder.append(']');
|
|
} else if (value instanceof String) {
|
|
// Enclose strings in quotes to make it clear they're strings.
|
|
builder.append('"').append(value).append('"');
|
|
} else {
|
|
builder.append(value);
|
|
}
|
|
}
|
|
|
|
// TODO(bugs.webrtc.org/8557) Use ctor directly with full Map type.
|
|
@SuppressWarnings("unchecked")
|
|
@CalledByNative
|
|
static RTCStats create(long timestampUs, String type, String id, Map members) {
|
|
return new RTCStats(timestampUs, type, id, members);
|
|
}
|
|
}
|