mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: gather all remote info from MediaEndpoint with Transaction
parent
19ff07cd9e
commit
50ab460f1d
|
@ -17,6 +17,7 @@
|
|||
|
||||
package io.openvidu.server.kurento.endpoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
@ -38,15 +39,15 @@ import org.kurento.client.MediaPipeline;
|
|||
import org.kurento.client.PlayerEndpoint;
|
||||
import org.kurento.client.RtpEndpoint;
|
||||
import org.kurento.client.SdpEndpoint;
|
||||
import org.kurento.client.TFuture;
|
||||
import org.kurento.client.Transaction;
|
||||
import org.kurento.client.WebRtcEndpoint;
|
||||
import org.kurento.client.internal.server.KurentoServerException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonNull;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import io.openvidu.client.OpenViduException;
|
||||
|
@ -91,8 +92,8 @@ public abstract class MediaEndpoint {
|
|||
private MediaPipeline pipeline = null;
|
||||
private ListenerSubscription endpointSubscription = null;
|
||||
|
||||
private final List<IceCandidate> receivedCandidateList = new LinkedList<IceCandidate>();
|
||||
private final List<IceCandidate> gatheredCandidateList = new LinkedList<IceCandidate>();
|
||||
private final List<IceCandidate> receivedCandidateList = new ArrayList<IceCandidate>();
|
||||
private final List<IceCandidate> gatheredCandidateList = new ArrayList<IceCandidate>();
|
||||
private LinkedList<IceCandidate> candidates = new LinkedList<IceCandidate>();
|
||||
|
||||
public String selectedLocalIceCandidate;
|
||||
|
@ -596,30 +597,41 @@ public abstract class MediaEndpoint {
|
|||
json.addProperty("webrtcEndpointName", this.getEndpointName());
|
||||
if (!this.isPlayerEndpoint()) {
|
||||
try {
|
||||
json.addProperty("remoteSdp", ((SdpEndpoint) this.getEndpoint()).getRemoteSessionDescriptor());
|
||||
} catch (KurentoServerException e) {
|
||||
log.error("Error retrieving remote SDP for endpoint {} of stream {}: {}", this.endpointName,
|
||||
this.streamId, e.getMessage());
|
||||
json.add("remoteSdp", JsonNull.INSTANCE);
|
||||
}
|
||||
try {
|
||||
json.addProperty("localSdp", ((SdpEndpoint) this.getEndpoint()).getLocalSessionDescriptor());
|
||||
} catch (KurentoServerException e) {
|
||||
log.error("Error retrieving local SDP for endpoint {} of stream {}: {}", this.endpointName,
|
||||
this.streamId, e.getMessage());
|
||||
json.add("localSdp", JsonNull.INSTANCE);
|
||||
Transaction tx = this.getEndpoint().getMediaPipeline().beginTransaction();
|
||||
TFuture<String> future1 = ((SdpEndpoint) this.getEndpoint()).getRemoteSessionDescriptor(tx);
|
||||
TFuture<String> future2 = ((SdpEndpoint) this.getEndpoint()).getLocalSessionDescriptor(tx);
|
||||
TFuture<String> future3 = this.getWebEndpoint().getExternalAddress(tx);
|
||||
TFuture<String> future4 = this.getWebEndpoint().getNetworkInterfaces(tx);
|
||||
TFuture<String> future5 = this.getWebEndpoint().getStunServerAddress(tx);
|
||||
TFuture<Integer> future6 = this.getWebEndpoint().getStunServerPort(tx);
|
||||
TFuture<String> future7 = this.getWebEndpoint().getTurnUrl(tx);
|
||||
TFuture<String> future8 = this.getWebEndpoint().getId(tx);
|
||||
tx.commit();
|
||||
|
||||
json.addProperty("externalAddress", future3.get());
|
||||
json.addProperty("networkInterfaces", future4.get());
|
||||
json.addProperty("stunServerAddress", future5.get());
|
||||
json.addProperty("stunServerPort", future6.get());
|
||||
json.addProperty("turnUrl", future7.get());
|
||||
json.addProperty("mediaObjectId", future8.get());
|
||||
json.addProperty("remoteSdp", future1.get());
|
||||
json.addProperty("localSdp", future2.get());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Exception while getting remote information of WebRtcEndpoint {}: {} - {}", this.streamId,
|
||||
e.getClass().getName(), e.getMessage());
|
||||
}
|
||||
}
|
||||
Gson gson = new GsonBuilder().create();
|
||||
JsonArray receivedCandidates = new JsonArray();
|
||||
Iterator<IceCandidate> it1 = this.receivedCandidateList.iterator();
|
||||
while (it1.hasNext()) {
|
||||
while (it1 != null && it1.hasNext()) {
|
||||
receivedCandidates.add(gson.toJsonTree(it1.next()));
|
||||
}
|
||||
json.add("receivedCandidates", receivedCandidates);
|
||||
JsonArray gatheredCandidates = new JsonArray();
|
||||
Iterator<IceCandidate> it2 = this.gatheredCandidateList.iterator();
|
||||
while (it2.hasNext()) {
|
||||
while (it2 != null && it2.hasNext()) {
|
||||
gatheredCandidates.add(gson.toJsonTree(it2.next()));
|
||||
}
|
||||
json.add("gatheredCandidates", gatheredCandidates);
|
||||
|
|
Loading…
Reference in New Issue