Chromium Code Reviews| 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(); |
| } |