Add the url attribute to the IceCandidate (Java Wrapper)
The url of the ICE server is added to the IceCandiate class.
This can be used to tell which server this candidate was gathered from.
BUG=webrtc:7128
Review-Url: https://codereview.webrtc.org/2690593002
Cr-Original-Commit-Position: refs/heads/master@{#16593}
Committed: 8586c8ee88
Review-Url: https://codereview.webrtc.org/2690593002
Cr-Commit-Position: refs/heads/master@{#16615}
This commit is contained in:
@ -187,6 +187,7 @@ public class DirectRTCClient implements AppRTCClient, TCPChannelClient.TCPChanne
|
||||
jsonPut(json, "label", candidate.sdpMLineIndex);
|
||||
jsonPut(json, "id", candidate.sdpMid);
|
||||
jsonPut(json, "candidate", candidate.sdp);
|
||||
jsonPut(json, "url", candidate.serverUrl);
|
||||
|
||||
if (roomState != ConnectionState.CONNECTED) {
|
||||
reportError("Sending ICE candidate in non connected state.");
|
||||
@ -336,12 +337,13 @@ public class DirectRTCClient implements AppRTCClient, TCPChannelClient.TCPChanne
|
||||
jsonPut(json, "label", candidate.sdpMLineIndex);
|
||||
jsonPut(json, "id", candidate.sdpMid);
|
||||
jsonPut(json, "candidate", candidate.sdp);
|
||||
jsonPut(json, "url", candidate.serverUrl);
|
||||
return json;
|
||||
}
|
||||
|
||||
// Converts a JSON candidate to a Java object.
|
||||
private static IceCandidate toJavaCandidate(JSONObject json) throws JSONException {
|
||||
return new IceCandidate(
|
||||
json.getString("id"), json.getInt("label"), json.getString("candidate"));
|
||||
return new IceCandidate(json.getString("id"), json.getInt("label"), json.getString("candidate"),
|
||||
json.getString("url"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -115,8 +115,8 @@ public class RoomParametersFetcher {
|
||||
offerSdp = new SessionDescription(
|
||||
SessionDescription.Type.fromCanonicalForm(messageType), message.getString("sdp"));
|
||||
} else if (messageType.equals("candidate")) {
|
||||
IceCandidate candidate = new IceCandidate(
|
||||
message.getString("id"), message.getInt("label"), message.getString("candidate"));
|
||||
IceCandidate candidate = new IceCandidate(message.getString("id"),
|
||||
message.getInt("label"), message.getString("candidate"), message.getString("url"));
|
||||
iceCandidates.add(candidate);
|
||||
} else {
|
||||
Log.e(TAG, "Unknown message: " + messageString);
|
||||
|
||||
@ -408,12 +408,13 @@ public class WebSocketRTCClient implements AppRTCClient, WebSocketChannelEvents
|
||||
jsonPut(json, "label", candidate.sdpMLineIndex);
|
||||
jsonPut(json, "id", candidate.sdpMid);
|
||||
jsonPut(json, "candidate", candidate.sdp);
|
||||
jsonPut(json, "url", candidate.serverUrl);
|
||||
return json;
|
||||
}
|
||||
|
||||
// Converts a JSON candidate to a Java object.
|
||||
IceCandidate toJavaCandidate(JSONObject json) throws JSONException {
|
||||
return new IceCandidate(
|
||||
json.getString("id"), json.getInt("label"), json.getString("candidate"));
|
||||
return new IceCandidate(json.getString("id"), json.getInt("label"), json.getString("candidate"),
|
||||
json.getString("url"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ public class DirectRTCClientTest {
|
||||
|
||||
private static final String DUMMY_SDP_MID = "sdpMid";
|
||||
private static final String DUMMY_SDP = "sdp";
|
||||
private static final String DUMMY_SERVER_URL = "serverUrl";
|
||||
|
||||
public static final int SERVER_WAIT = 100;
|
||||
public static final int NETWORK_TIMEOUT = 1000;
|
||||
@ -136,7 +137,7 @@ public class DirectRTCClientTest {
|
||||
verify(serverEvents, timeout(NETWORK_TIMEOUT))
|
||||
.onRemoteDescription(isNotNull(SessionDescription.class));
|
||||
|
||||
IceCandidate candidate = new IceCandidate(DUMMY_SDP_MID, 0, DUMMY_SDP);
|
||||
IceCandidate candidate = new IceCandidate(DUMMY_SDP_MID, 0, DUMMY_SDP, DUMMY_SERVER_URL);
|
||||
server.sendLocalIceCandidate(candidate);
|
||||
verify(clientEvents, timeout(NETWORK_TIMEOUT))
|
||||
.onRemoteIceCandidate(isNotNull(IceCandidate.class));
|
||||
|
||||
@ -18,14 +18,24 @@ public class IceCandidate {
|
||||
public final String sdpMid;
|
||||
public final int sdpMLineIndex;
|
||||
public final String sdp;
|
||||
public final String serverUrl;
|
||||
|
||||
@Deprecated
|
||||
public IceCandidate(String sdpMid, int sdpMLineIndex, String sdp) {
|
||||
this.sdpMid = sdpMid;
|
||||
this.sdpMLineIndex = sdpMLineIndex;
|
||||
this.sdp = sdp;
|
||||
this.serverUrl = "";
|
||||
}
|
||||
|
||||
public IceCandidate(String sdpMid, int sdpMLineIndex, String sdp, String serverUrl) {
|
||||
this.sdpMid = sdpMid;
|
||||
this.sdpMLineIndex = sdpMLineIndex;
|
||||
this.sdp = sdp;
|
||||
this.serverUrl = serverUrl;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return sdpMid + ":" + sdpMLineIndex + ":" + sdp;
|
||||
return sdpMid + ":" + sdpMLineIndex + ":" + sdp + ":" + serverUrl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -245,12 +245,16 @@ class PCOJava : public PeerConnectionObserver {
|
||||
std::string sdp;
|
||||
RTC_CHECK(candidate->ToString(&sdp)) << "got so far: " << sdp;
|
||||
jclass candidate_class = FindClass(jni(), "org/webrtc/IceCandidate");
|
||||
jmethodID ctor = GetMethodID(jni(), candidate_class,
|
||||
"<init>", "(Ljava/lang/String;ILjava/lang/String;)V");
|
||||
jmethodID ctor = GetMethodID(
|
||||
jni(), candidate_class, "<init>",
|
||||
"(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V");
|
||||
jstring j_mid = JavaStringFromStdString(jni(), candidate->sdp_mid());
|
||||
jstring j_sdp = JavaStringFromStdString(jni(), sdp);
|
||||
jobject j_candidate = jni()->NewObject(candidate_class, ctor, j_mid,
|
||||
candidate->sdp_mline_index(), j_sdp);
|
||||
jstring j_url =
|
||||
JavaStringFromStdString(jni(), candidate->candidate().url());
|
||||
jobject j_candidate =
|
||||
jni()->NewObject(candidate_class, ctor, j_mid,
|
||||
candidate->sdp_mline_index(), j_sdp, j_url);
|
||||
CHECK_EXCEPTION(jni()) << "error during NewObject";
|
||||
jmethodID m = GetMethodID(jni(), *j_observer_class_,
|
||||
"onIceCandidate", "(Lorg/webrtc/IceCandidate;)V");
|
||||
|
||||
Reference in New Issue
Block a user