87 lines
2.3 KiB
Java
87 lines
2.3 KiB
Java
/*
|
|
* Copyright 2013 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 androidx.annotation.Nullable;
|
|
import java.util.Arrays;
|
|
import org.webrtc.PeerConnection;
|
|
|
|
/**
|
|
* Representation of a single ICE Candidate, mirroring
|
|
* {@code IceCandidateInterface} in the C++ API.
|
|
*/
|
|
public class IceCandidate {
|
|
public final String sdpMid;
|
|
public final int sdpMLineIndex;
|
|
public final String sdp;
|
|
public final String serverUrl;
|
|
public final PeerConnection.AdapterType adapterType;
|
|
|
|
public IceCandidate(String sdpMid, int sdpMLineIndex, String sdp) {
|
|
this.sdpMid = sdpMid;
|
|
this.sdpMLineIndex = sdpMLineIndex;
|
|
this.sdp = sdp;
|
|
this.serverUrl = "";
|
|
this.adapterType = PeerConnection.AdapterType.UNKNOWN;
|
|
}
|
|
|
|
@CalledByNative
|
|
IceCandidate(String sdpMid, int sdpMLineIndex, String sdp, String serverUrl,
|
|
PeerConnection.AdapterType adapterType) {
|
|
this.sdpMid = sdpMid;
|
|
this.sdpMLineIndex = sdpMLineIndex;
|
|
this.sdp = sdp;
|
|
this.serverUrl = serverUrl;
|
|
this.adapterType = adapterType;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return sdpMid + ":" + sdpMLineIndex + ":" + sdp + ":" + serverUrl + ":"
|
|
+ adapterType.toString();
|
|
}
|
|
|
|
@CalledByNative
|
|
String getSdpMid() {
|
|
return sdpMid;
|
|
}
|
|
|
|
@CalledByNative
|
|
String getSdp() {
|
|
return sdp;
|
|
}
|
|
|
|
/** equals() checks sdpMid, sdpMLineIndex, and sdp for equality. */
|
|
@Override
|
|
public boolean equals(@Nullable Object object) {
|
|
if (!(object instanceof IceCandidate)) {
|
|
return false;
|
|
}
|
|
|
|
IceCandidate that = (IceCandidate) object;
|
|
return objectEquals(this.sdpMid, that.sdpMid) && this.sdpMLineIndex == that.sdpMLineIndex
|
|
&& objectEquals(this.sdp, that.sdp);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
Object[] values = {sdpMid, sdpMLineIndex, sdp};
|
|
return Arrays.hashCode(values);
|
|
}
|
|
|
|
private static boolean objectEquals(Object o1, Object o2) {
|
|
if (o1 == null) {
|
|
return o2 == null;
|
|
}
|
|
return o1.equals(o2);
|
|
}
|
|
}
|