| 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..50023001d724b12b8da0b8d97704bd36020a6895 100644
|
| --- a/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
|
| +++ b/talk/app/webrtc/java/src/org/webrtc/PeerConnection.java
|
| @@ -29,6 +29,7 @@
|
| package org.webrtc;
|
|
|
| import java.util.ArrayList;
|
| +import java.util.Collections;
|
| import java.util.LinkedList;
|
| import java.util.List;
|
|
|
| @@ -170,11 +171,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.
|
| @@ -218,6 +223,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 Collections.unmodifiableList(senders);
|
| + }
|
| +
|
| + public List<RtpReceiver> getReceivers() {
|
| + for (RtpReceiver receiver : receivers) {
|
| + receiver.dispose();
|
| + }
|
| + receivers = nativeGetReceivers();
|
| + return Collections.unmodifiableList(receivers);
|
| + }
|
| +
|
| public boolean getStats(StatsObserver observer, MediaStreamTrack track) {
|
| return nativeGetStats(observer, (track == null) ? 0 : track.nativeTrack);
|
| }
|
| @@ -239,6 +262,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);
|
| }
|
| @@ -256,4 +287,8 @@ public class PeerConnection {
|
|
|
| private native boolean nativeGetStats(
|
| StatsObserver observer, long nativeTrack);
|
| +
|
| + private native List<RtpSender> nativeGetSenders();
|
| +
|
| + private native List<RtpReceiver> nativeGetReceivers();
|
| }
|
|
|