Index: talk/app/webrtc/java/src/org/webrtc/PeerConnection.java |
diff --git a/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java b/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java |
index 40ac615dcc484146204c7dc4bbda9b7a449ece10..9df0c479c1aa6972cdc27ba76b56e7bf1ef04a93 100644 |
--- a/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java |
+++ b/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java |
@@ -170,11 +170,15 @@ public class PeerConnection { |
private final List<MediaStream> localStreams; |
private final long nativePeerConnection; |
private final long nativeObserver; |
+ private List<RtpSender> senders; |
+ private List<RtpReceiver> receivers; |
PeerConnection(long nativePeerConnection, long nativeObserver) { |
this.nativePeerConnection = nativePeerConnection; |
this.nativeObserver = nativeObserver; |
localStreams = new LinkedList<MediaStream>(); |
+ senders = new LinkedList<RtpSender>(); |
+ receivers = new LinkedList<RtpReceiver>(); |
} |
// JsepInterface. |
@@ -191,11 +195,15 @@ public class PeerConnection { |
public native void createAnswer( |
SdpObserver observer, MediaConstraints constraints); |
- public native void setLocalDescription( |
- SdpObserver observer, SessionDescription sdp); |
+ public void setLocalDescription( |
AlexG
2015/10/02 22:44:35
This change is not needed now - you can revert bac
Taylor Brandstetter
2015/10/03 01:50:10
Done.
|
+ SdpObserver observer, SessionDescription sdp) { |
+ nativeSetLocalDescription(observer, sdp); |
+ } |
- public native void setRemoteDescription( |
- SdpObserver observer, SessionDescription sdp); |
+ public void setRemoteDescription( |
AlexG
2015/10/02 22:44:35
ditto: revert back to native
Taylor Brandstetter
2015/10/03 01:50:10
Done.
|
+ SdpObserver observer, SessionDescription sdp) { |
+ nativeSetRemoteDescription(observer, sdp); |
+ } |
public native boolean setConfiguration(RTCConfiguration config); |
@@ -218,6 +226,24 @@ public class PeerConnection { |
localStreams.remove(stream); |
} |
+ // Note that calling getSenders will dispose of the senders previously |
+ // returned (and same goes for getReceivers). |
+ public List<RtpSender> getSenders() { |
+ for (RtpSender sender : senders) { |
+ sender.dispose(); |
+ } |
+ senders = nativeGetSenders(); |
+ return new ArrayList<RtpSender>(senders); |
AlexG
2015/10/02 22:44:35
why new here? You can return senders directly with
Taylor Brandstetter
2015/10/03 01:50:10
Because if the caller of getSenders() modified the
AlexG
2015/10/05 22:44:53
May be you can use Collections.unmodifiableList fo
|
+ } |
+ |
+ public List<RtpReceiver> getReceivers() { |
+ for (RtpReceiver receiver : receivers) { |
+ receiver.dispose(); |
+ } |
+ receivers = nativeGetReceivers(); |
+ return new ArrayList<RtpReceiver>(receivers); |
AlexG
2015/10/02 22:44:35
ditto: return receivers without making extra copy
Taylor Brandstetter
2015/10/03 01:50:10
See above.
|
+ } |
+ |
public boolean getStats(StatsObserver observer, MediaStreamTrack track) { |
return nativeGetStats(observer, (track == null) ? 0 : track.nativeTrack); |
} |
@@ -239,6 +265,14 @@ public class PeerConnection { |
stream.dispose(); |
} |
localStreams.clear(); |
+ for (RtpSender sender : senders) { |
+ sender.dispose(); |
+ } |
+ senders.clear(); |
+ for (RtpReceiver receiver : receivers) { |
+ receiver.dispose(); |
+ } |
+ receivers.clear(); |
freePeerConnection(nativePeerConnection); |
freeObserver(nativeObserver); |
} |
@@ -250,10 +284,18 @@ public class PeerConnection { |
private native boolean nativeAddIceCandidate( |
String sdpMid, int sdpMLineIndex, String iceCandidateSdp); |
+ public native void nativeSetLocalDescription(SdpObserver observer, SessionDescription sdp); |
+ |
+ public native void nativeSetRemoteDescription(SdpObserver observer, SessionDescription sdp); |
+ |
private native boolean nativeAddLocalStream(long nativeStream); |
private native void nativeRemoveLocalStream(long nativeStream); |
private native boolean nativeGetStats( |
StatsObserver observer, long nativeTrack); |
+ |
+ private native List<RtpSender> nativeGetSenders(); |
+ |
+ private native List<RtpReceiver> nativeGetReceivers(); |
} |