Index: talk/app/webrtc/peerconnection.h |
diff --git a/talk/app/webrtc/peerconnection.h b/talk/app/webrtc/peerconnection.h |
index 2160afb241c392084be3f22bea0669a1aa62769e..a77b3f6d9d30fcd2a7801e0e1bc399cc67fc41af 100644 |
--- a/talk/app/webrtc/peerconnection.h |
+++ b/talk/app/webrtc/peerconnection.h |
@@ -29,25 +29,27 @@ |
#define TALK_APP_WEBRTC_PEERCONNECTION_H_ |
#include <string> |
+#include <utility> // for std::pair |
#include "talk/app/webrtc/dtlsidentitystore.h" |
#include "talk/app/webrtc/mediastreamsignaling.h" |
#include "talk/app/webrtc/peerconnectionfactory.h" |
#include "talk/app/webrtc/peerconnectioninterface.h" |
+#include "talk/app/webrtc/rtpreceiver.h" |
+#include "talk/app/webrtc/rtpsender.h" |
#include "talk/app/webrtc/statscollector.h" |
#include "talk/app/webrtc/streamcollection.h" |
#include "talk/app/webrtc/webrtcsession.h" |
#include "webrtc/base/scoped_ptr.h" |
namespace webrtc { |
-class MediaStreamHandlerContainer; |
typedef std::vector<PortAllocatorFactoryInterface::StunConfiguration> |
StunConfigurations; |
typedef std::vector<PortAllocatorFactoryInterface::TurnConfiguration> |
TurnConfigurations; |
-// PeerConnectionImpl implements the PeerConnection interface. |
+// PeerConnection implements the PeerConnectionInterface interface. |
// It uses MediaStreamSignaling and WebRtcSession to implement |
// the PeerConnection functionality. |
class PeerConnection : public PeerConnectionInterface, |
@@ -72,6 +74,9 @@ class PeerConnection : public PeerConnectionInterface, |
virtual rtc::scoped_refptr<DtmfSenderInterface> CreateDtmfSender( |
AudioTrackInterface* track); |
+ RtpSenderRefptrs GetSenders() const override; |
+ RtpReceiverRefptrs GetReceivers() const override; |
+ |
virtual rtc::scoped_refptr<DataChannelInterface> CreateDataChannel( |
const std::string& label, |
const DataChannelInit* config); |
@@ -168,6 +173,21 @@ class PeerConnection : public PeerConnectionInterface, |
return signaling_state_ == PeerConnectionInterface::kClosed; |
} |
+ typedef std::pair<rtc::scoped_refptr<BaseRtpSender>, |
+ rtc::scoped_refptr<RtpSenderInterface>> RtpSenderPair; |
+ typedef std::pair<rtc::scoped_refptr<BaseRtpReceiver>, |
+ rtc::scoped_refptr<RtpReceiverInterface>> RtpReceiverPair; |
pthatcher1
2015/09/23 14:47:39
This seems a bit too complicated. Can we just mov
|
+ typedef std::vector<RtpSenderPair> RtpSenderPairList; |
+ typedef std::vector<RtpReceiverPair> RtpReceiverPairList; |
+ |
+ void AddRtpSender(BaseRtpSender* sender); |
+ void AddRtpReceiver(BaseRtpReceiver* receiver); |
+ |
+ RtpSenderPairList::iterator FindRtpSenderPairForTrack( |
+ MediaStreamTrackInterface* track); |
+ RtpReceiverPairList::iterator FindRtpReceiverPairForTrack( |
+ MediaStreamTrackInterface* track); |
+ |
// Storing the factory as a scoped reference pointer ensures that the memory |
// in the PeerConnectionFactoryImpl remains available as long as the |
// PeerConnection is running. It is passed to PeerConnection as a raw pointer. |
@@ -186,8 +206,13 @@ class PeerConnection : public PeerConnectionInterface, |
rtc::scoped_ptr<cricket::PortAllocator> port_allocator_; |
rtc::scoped_ptr<WebRtcSession> session_; |
rtc::scoped_ptr<MediaStreamSignaling> mediastream_signaling_; |
- rtc::scoped_ptr<MediaStreamHandlerContainer> stream_handler_container_; |
rtc::scoped_ptr<StatsCollector> stats_; |
+ |
+ // Store pairs of base pointers and pointers to proxy objects, so that when |
+ // GetSenders/GetReceivers is called, we can return the same proxy objects |
+ // each time. |
+ RtpSenderPairList rtp_sender_pairs_; |
+ RtpReceiverPairList rtp_receiver_pairs_; |
pthatcher1
2015/09/23 14:47:39
***
pthatcher1
2015/09/23 14:59:09
This was a not to myself to come back and say "Why
|
}; |
} // namespace webrtc |