blob: 5f00b2a5f464daa6c1b0f58172c5be571e7fedc1 [file] [log] [blame]
/*
* 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);
}
}