| /* |
| * 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); |
| } |
| } |