| /* | |
| * 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 IceCandidate} 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; | |
| } | |
| @CalledByNative | |
| int getSdpMLineIndex() { | |
| return sdpMLineIndex; | |
| } | |
| /** 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); | |
| } | |
| } |