Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: webrtc/pc/channel.h

Issue 2614813003: Revert of Separating SCTP code from BaseChannel/MediaChannel. (Closed)
Patch Set: Also reverting https://codereview.webrtc.org/2612963002 Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/media/sctp/sctptransportinternal.h ('k') | webrtc/pc/channel.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 BundleFilter* bundle_filter() { return &bundle_filter_; } 143 BundleFilter* bundle_filter() { return &bundle_filter_; }
144 144
145 const std::vector<StreamParams>& local_streams() const { 145 const std::vector<StreamParams>& local_streams() const {
146 return local_streams_; 146 return local_streams_;
147 } 147 }
148 const std::vector<StreamParams>& remote_streams() const { 148 const std::vector<StreamParams>& remote_streams() const {
149 return remote_streams_; 149 return remote_streams_;
150 } 150 }
151 151
152 sigslot::signal2<BaseChannel*, bool> SignalDtlsSrtpSetupFailure; 152 sigslot::signal2<BaseChannel*, bool> SignalDtlsSetupFailure;
153 void SignalDtlsSrtpSetupFailure_n(bool rtcp); 153 void SignalDtlsSetupFailure_n(bool rtcp);
154 void SignalDtlsSrtpSetupFailure_s(bool rtcp); 154 void SignalDtlsSetupFailure_s(bool rtcp);
155 155
156 // Used for latency measurements. 156 // Used for latency measurements.
157 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived; 157 sigslot::signal1<BaseChannel*> SignalFirstPacketReceived;
158 158
159 // Forward TransportChannel SignalSentPacket to worker thread. 159 // Forward TransportChannel SignalSentPacket to worker thread.
160 sigslot::signal1<const rtc::SentPacket&> SignalSentPacket; 160 sigslot::signal1<const rtc::SentPacket&> SignalSentPacket;
161 161
162 // Only public for unit tests. Otherwise, consider private. 162 // Only public for unit tests. Otherwise, consider private.
163 TransportChannel* transport_channel() const { return transport_channel_; } 163 TransportChannel* transport_channel() const { return transport_channel_; }
164 TransportChannel* rtcp_transport_channel() const { 164 TransportChannel* rtcp_transport_channel() const {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 int last_sent_packet_id, 254 int last_sent_packet_id,
255 bool ready_to_send); 255 bool ready_to_send);
256 256
257 bool PacketIsRtcp(const rtc::PacketTransportInterface* transport, 257 bool PacketIsRtcp(const rtc::PacketTransportInterface* transport,
258 const char* data, 258 const char* data,
259 size_t len); 259 size_t len);
260 bool SendPacket(bool rtcp, 260 bool SendPacket(bool rtcp,
261 rtc::CopyOnWriteBuffer* packet, 261 rtc::CopyOnWriteBuffer* packet,
262 const rtc::PacketOptions& options); 262 const rtc::PacketOptions& options);
263 263
264 bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet); 264 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet);
265 void HandlePacket(bool rtcp, rtc::CopyOnWriteBuffer* packet, 265 void HandlePacket(bool rtcp, rtc::CopyOnWriteBuffer* packet,
266 const rtc::PacketTime& packet_time); 266 const rtc::PacketTime& packet_time);
267 void OnPacketReceived(bool rtcp, 267 void OnPacketReceived(bool rtcp,
268 const rtc::CopyOnWriteBuffer& packet, 268 const rtc::CopyOnWriteBuffer& packet,
269 const rtc::PacketTime& packet_time); 269 const rtc::PacketTime& packet_time);
270 270
271 void EnableMedia_w(); 271 void EnableMedia_w();
272 void DisableMedia_w(); 272 void DisableMedia_w();
273 273
274 // Performs actions if the RTP/RTCP writable state changed. This should 274 // Performs actions if the RTP/RTCP writable state changed. This should
275 // be called whenever a channel's writable state changes or when RTCP muxing 275 // be called whenever a channel's writable state changes or when RTCP muxing
276 // becomes active/inactive. 276 // becomes active/inactive.
277 void UpdateWritableState_n(); 277 void UpdateWritableState_n();
278 void ChannelWritable_n(); 278 void ChannelWritable_n();
279 void ChannelNotWritable_n(); 279 void ChannelNotWritable_n();
280 280
281 bool AddRecvStream_w(const StreamParams& sp); 281 bool AddRecvStream_w(const StreamParams& sp);
282 bool RemoveRecvStream_w(uint32_t ssrc); 282 bool RemoveRecvStream_w(uint32_t ssrc);
283 bool AddSendStream_w(const StreamParams& sp); 283 bool AddSendStream_w(const StreamParams& sp);
284 bool RemoveSendStream_w(uint32_t ssrc); 284 bool RemoveSendStream_w(uint32_t ssrc);
285 bool ShouldSetupDtlsSrtp_n() const; 285 virtual bool ShouldSetupDtlsSrtp_n() const;
286 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters. 286 // Do the DTLS key expansion and impose it on the SRTP/SRTCP filters.
287 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter. 287 // |rtcp_channel| indicates whether to set up the RTP or RTCP filter.
288 bool SetupDtlsSrtp_n(bool rtcp_channel); 288 bool SetupDtlsSrtp_n(bool rtcp_channel);
289 void MaybeSetupDtlsSrtp_n(); 289 void MaybeSetupDtlsSrtp_n();
290 // Set the DTLS-SRTP cipher policy on this channel as appropriate. 290 // Set the DTLS-SRTP cipher policy on this channel as appropriate.
291 bool SetDtlsSrtpCryptoSuites_n(TransportChannel* tc, bool rtcp); 291 bool SetDtlsSrtpCryptoSuites_n(TransportChannel* tc, bool rtcp);
292 292
293 // Should be called whenever the conditions for 293 // Should be called whenever the conditions for
294 // IsReadyToReceiveMedia/IsReadyToSendMedia are satisfied (or unsatisfied). 294 // IsReadyToReceiveMedia/IsReadyToSendMedia are satisfied (or unsatisfied).
295 // Updates the send/recv state of the media channel. 295 // Updates the send/recv state of the media channel.
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 std::unique_ptr<VideoMediaMonitor> media_monitor_; 608 std::unique_ptr<VideoMediaMonitor> media_monitor_;
609 609
610 // Last VideoSendParameters sent down to the media_channel() via 610 // Last VideoSendParameters sent down to the media_channel() via
611 // SetSendParameters. 611 // SetSendParameters.
612 VideoSendParameters last_send_params_; 612 VideoSendParameters last_send_params_;
613 // Last VideoRecvParameters sent down to the media_channel() via 613 // Last VideoRecvParameters sent down to the media_channel() via
614 // SetRecvParameters. 614 // SetRecvParameters.
615 VideoRecvParameters last_recv_params_; 615 VideoRecvParameters last_recv_params_;
616 }; 616 };
617 617
618 // RtpDataChannel is a specialization for data. 618 // DataChannel is a specialization for data.
619 class RtpDataChannel : public BaseChannel { 619 class DataChannel : public BaseChannel {
620 public: 620 public:
621 RtpDataChannel(rtc::Thread* worker_thread, 621 DataChannel(rtc::Thread* worker_thread,
622 rtc::Thread* network_thread, 622 rtc::Thread* network_thread,
623 DataMediaChannel* media_channel, 623 DataMediaChannel* media_channel,
624 TransportController* transport_controller, 624 TransportController* transport_controller,
625 const std::string& content_name, 625 const std::string& content_name,
626 bool rtcp, 626 bool rtcp,
627 bool srtp_required); 627 bool srtp_required);
628 ~RtpDataChannel(); 628 ~DataChannel();
629 bool Init_w(const std::string* bundle_transport_name); 629 bool Init_w(const std::string* bundle_transport_name);
630 630
631 virtual bool SendData(const SendDataParams& params, 631 virtual bool SendData(const SendDataParams& params,
632 const rtc::CopyOnWriteBuffer& payload, 632 const rtc::CopyOnWriteBuffer& payload,
633 SendDataResult* result); 633 SendDataResult* result);
634 634
635 void StartMediaMonitor(int cms); 635 void StartMediaMonitor(int cms);
636 void StopMediaMonitor(); 636 void StopMediaMonitor();
637 637
638 // Should be called on the signaling thread only. 638 // Should be called on the signaling thread only.
639 bool ready_to_send_data() const { 639 bool ready_to_send_data() const {
640 return ready_to_send_data_; 640 return ready_to_send_data_;
641 } 641 }
642 642
643 sigslot::signal2<RtpDataChannel*, const DataMediaInfo&> SignalMediaMonitor; 643 sigslot::signal2<DataChannel*, const DataMediaInfo&> SignalMediaMonitor;
644 sigslot::signal2<RtpDataChannel*, const std::vector<ConnectionInfo>&> 644 sigslot::signal2<DataChannel*, const std::vector<ConnectionInfo>&>
645 SignalConnectionMonitor; 645 SignalConnectionMonitor;
646 646 sigslot::signal3<DataChannel*, const ReceiveDataParams&,
647 sigslot::signal2<const ReceiveDataParams&, const rtc::CopyOnWriteBuffer&> 647 const rtc::CopyOnWriteBuffer&> SignalDataReceived;
648 SignalDataReceived;
649 // Signal for notifying when the channel becomes ready to send data. 648 // Signal for notifying when the channel becomes ready to send data.
650 // That occurs when the channel is enabled, the transport is writable, 649 // That occurs when the channel is enabled, the transport is writable,
651 // both local and remote descriptions are set, and the channel is unblocked. 650 // both local and remote descriptions are set, and the channel is unblocked.
652 sigslot::signal1<bool> SignalReadyToSendData; 651 sigslot::signal1<bool> SignalReadyToSendData;
652 // Signal for notifying that the remote side has closed the DataChannel.
653 sigslot::signal1<uint32_t> SignalStreamClosedRemotely;
653 cricket::MediaType media_type() override { return cricket::MEDIA_TYPE_DATA; } 654 cricket::MediaType media_type() override { return cricket::MEDIA_TYPE_DATA; }
654 655
655 protected: 656 protected:
656 // downcasts a MediaChannel. 657 // downcasts a MediaChannel.
657 DataMediaChannel* media_channel() const override { 658 DataMediaChannel* media_channel() const override {
658 return static_cast<DataMediaChannel*>(BaseChannel::media_channel()); 659 return static_cast<DataMediaChannel*>(BaseChannel::media_channel());
659 } 660 }
660 661
661 private: 662 private:
662 struct SendDataMessageData : public rtc::MessageData { 663 struct SendDataMessageData : public rtc::MessageData {
(...skipping 22 matching lines...) Expand all
685 payload(data, len) { 686 payload(data, len) {
686 } 687 }
687 const ReceiveDataParams params; 688 const ReceiveDataParams params;
688 const rtc::CopyOnWriteBuffer payload; 689 const rtc::CopyOnWriteBuffer payload;
689 }; 690 };
690 691
691 typedef rtc::TypedMessageData<bool> DataChannelReadyToSendMessageData; 692 typedef rtc::TypedMessageData<bool> DataChannelReadyToSendMessageData;
692 693
693 // overrides from BaseChannel 694 // overrides from BaseChannel
694 const ContentInfo* GetFirstContent(const SessionDescription* sdesc) override; 695 const ContentInfo* GetFirstContent(const SessionDescription* sdesc) override;
695 // Checks that data channel type is RTP. 696 // If data_channel_type_ is DCT_NONE, set it. Otherwise, check that
696 bool CheckDataChannelTypeFromContent(const DataContentDescription* content, 697 // it's the same as what was set previously. Returns false if it's
697 std::string* error_desc); 698 // set to one type one type and changed to another type later.
699 bool SetDataChannelType(DataChannelType new_data_channel_type,
700 std::string* error_desc);
701 // Same as SetDataChannelType, but extracts the type from the
702 // DataContentDescription.
703 bool SetDataChannelTypeFromContent(const DataContentDescription* content,
704 std::string* error_desc);
698 bool SetLocalContent_w(const MediaContentDescription* content, 705 bool SetLocalContent_w(const MediaContentDescription* content,
699 ContentAction action, 706 ContentAction action,
700 std::string* error_desc) override; 707 std::string* error_desc) override;
701 bool SetRemoteContent_w(const MediaContentDescription* content, 708 bool SetRemoteContent_w(const MediaContentDescription* content,
702 ContentAction action, 709 ContentAction action,
703 std::string* error_desc) override; 710 std::string* error_desc) override;
704 void UpdateMediaSendRecvState_w() override; 711 void UpdateMediaSendRecvState_w() override;
712 bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet) override;
705 713
706 void OnMessage(rtc::Message* pmsg) override; 714 void OnMessage(rtc::Message* pmsg) override;
707 void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const override; 715 void GetSrtpCryptoSuites_n(std::vector<int>* crypto_suites) const override;
708 void OnConnectionMonitorUpdate( 716 void OnConnectionMonitorUpdate(
709 ConnectionMonitor* monitor, 717 ConnectionMonitor* monitor,
710 const std::vector<ConnectionInfo>& infos) override; 718 const std::vector<ConnectionInfo>& infos) override;
711 void OnMediaMonitorUpdate(DataMediaChannel* media_channel, 719 void OnMediaMonitorUpdate(DataMediaChannel* media_channel,
712 const DataMediaInfo& info); 720 const DataMediaInfo& info);
721 bool ShouldSetupDtlsSrtp_n() const override;
713 void OnDataReceived( 722 void OnDataReceived(
714 const ReceiveDataParams& params, const char* data, size_t len); 723 const ReceiveDataParams& params, const char* data, size_t len);
715 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error); 724 void OnDataChannelError(uint32_t ssrc, DataMediaChannel::Error error);
716 void OnDataChannelReadyToSend(bool writable); 725 void OnDataChannelReadyToSend(bool writable);
726 void OnStreamClosedRemotely(uint32_t sid);
717 727
718 std::unique_ptr<DataMediaMonitor> media_monitor_; 728 std::unique_ptr<DataMediaMonitor> media_monitor_;
719 bool ready_to_send_data_ = false; 729 // TODO(pthatcher): Make a separate SctpDataChannel and
730 // RtpDataChannel instead of using this.
731 DataChannelType data_channel_type_;
732 bool ready_to_send_data_;
720 733
721 // Last DataSendParameters sent down to the media_channel() via 734 // Last DataSendParameters sent down to the media_channel() via
722 // SetSendParameters. 735 // SetSendParameters.
723 DataSendParameters last_send_params_; 736 DataSendParameters last_send_params_;
724 // Last DataRecvParameters sent down to the media_channel() via 737 // Last DataRecvParameters sent down to the media_channel() via
725 // SetRecvParameters. 738 // SetRecvParameters.
726 DataRecvParameters last_recv_params_; 739 DataRecvParameters last_recv_params_;
727 }; 740 };
728 741
729 } // namespace cricket 742 } // namespace cricket
730 743
731 #endif // WEBRTC_PC_CHANNEL_H_ 744 #endif // WEBRTC_PC_CHANNEL_H_
OLDNEW
« no previous file with comments | « webrtc/media/sctp/sctptransportinternal.h ('k') | webrtc/pc/channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698