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

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

Issue 1823503002: Reland Use CopyOnWriteBuffer instead of Buffer to avoid unnecessary copies. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 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
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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 return transport_controller_->signaling_thread(); 184 return transport_controller_->signaling_thread();
185 } 185 }
186 bool rtcp_transport_enabled() const { return rtcp_transport_enabled_; } 186 bool rtcp_transport_enabled() const { return rtcp_transport_enabled_; }
187 187
188 void ConnectToTransportChannel(TransportChannel* tc); 188 void ConnectToTransportChannel(TransportChannel* tc);
189 void DisconnectFromTransportChannel(TransportChannel* tc); 189 void DisconnectFromTransportChannel(TransportChannel* tc);
190 190
191 void FlushRtcpMessages(); 191 void FlushRtcpMessages();
192 192
193 // NetworkInterface implementation, called by MediaEngine 193 // NetworkInterface implementation, called by MediaEngine
194 bool SendPacket(rtc::Buffer* packet, 194 bool SendPacket(rtc::CopyOnWriteBuffer* packet,
195 const rtc::PacketOptions& options) override; 195 const rtc::PacketOptions& options) override;
196 bool SendRtcp(rtc::Buffer* packet, const rtc::PacketOptions& options) 196 bool SendRtcp(rtc::CopyOnWriteBuffer* packet,
197 override; 197 const rtc::PacketOptions& options) override;
198 198
199 // From TransportChannel 199 // From TransportChannel
200 void OnWritableState(TransportChannel* channel); 200 void OnWritableState(TransportChannel* channel);
201 virtual void OnChannelRead(TransportChannel* channel, 201 virtual void OnChannelRead(TransportChannel* channel,
202 const char* data, 202 const char* data,
203 size_t len, 203 size_t len,
204 const rtc::PacketTime& packet_time, 204 const rtc::PacketTime& packet_time,
205 int flags); 205 int flags);
206 void OnReadyToSend(TransportChannel* channel); 206 void OnReadyToSend(TransportChannel* channel);
207 207
208 void OnDtlsState(TransportChannel* channel, DtlsTransportState state); 208 void OnDtlsState(TransportChannel* channel, DtlsTransportState state);
209 209
210 bool PacketIsRtcp(const TransportChannel* channel, const char* data, 210 bool PacketIsRtcp(const TransportChannel* channel, const char* data,
211 size_t len); 211 size_t len);
212 bool SendPacket(bool rtcp, 212 bool SendPacket(bool rtcp,
213 rtc::Buffer* packet, 213 rtc::CopyOnWriteBuffer* packet,
214 const rtc::PacketOptions& options); 214 const rtc::PacketOptions& options);
215 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); 215 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet);
216 void HandlePacket(bool rtcp, rtc::Buffer* packet, 216 void HandlePacket(bool rtcp, rtc::CopyOnWriteBuffer* packet,
217 const rtc::PacketTime& packet_time); 217 const rtc::PacketTime& packet_time);
218 218
219 void EnableMedia_w(); 219 void EnableMedia_w();
220 void DisableMedia_w(); 220 void DisableMedia_w();
221 void UpdateWritableState_w(); 221 void UpdateWritableState_w();
222 void ChannelWritable_w(); 222 void ChannelWritable_w();
223 void ChannelNotWritable_w(); 223 void ChannelNotWritable_w();
224 bool AddRecvStream_w(const StreamParams& sp); 224 bool AddRecvStream_w(const StreamParams& sp);
225 bool RemoveRecvStream_w(uint32_t ssrc); 225 bool RemoveRecvStream_w(uint32_t ssrc);
226 bool AddSendStream_w(const StreamParams& sp); 226 bool AddSendStream_w(const StreamParams& sp);
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 public: 495 public:
496 DataChannel(rtc::Thread* thread, 496 DataChannel(rtc::Thread* thread,
497 DataMediaChannel* media_channel, 497 DataMediaChannel* media_channel,
498 TransportController* transport_controller, 498 TransportController* transport_controller,
499 const std::string& content_name, 499 const std::string& content_name,
500 bool rtcp); 500 bool rtcp);
501 ~DataChannel(); 501 ~DataChannel();
502 bool Init(); 502 bool Init();
503 503
504 virtual bool SendData(const SendDataParams& params, 504 virtual bool SendData(const SendDataParams& params,
505 const rtc::Buffer& payload, 505 const rtc::CopyOnWriteBuffer& payload,
506 SendDataResult* result); 506 SendDataResult* result);
507 507
508 void StartMediaMonitor(int cms); 508 void StartMediaMonitor(int cms);
509 void StopMediaMonitor(); 509 void StopMediaMonitor();
510 510
511 // Should be called on the signaling thread only. 511 // Should be called on the signaling thread only.
512 bool ready_to_send_data() const { 512 bool ready_to_send_data() const {
513 return ready_to_send_data_; 513 return ready_to_send_data_;
514 } 514 }
515 515
516 sigslot::signal2<DataChannel*, const DataMediaInfo&> SignalMediaMonitor; 516 sigslot::signal2<DataChannel*, const DataMediaInfo&> SignalMediaMonitor;
517 sigslot::signal2<DataChannel*, const std::vector<ConnectionInfo>&> 517 sigslot::signal2<DataChannel*, const std::vector<ConnectionInfo>&>
518 SignalConnectionMonitor; 518 SignalConnectionMonitor;
519 sigslot::signal3<DataChannel*, const ReceiveDataParams&, const rtc::Buffer&> 519 sigslot::signal3<DataChannel*, const ReceiveDataParams&,
520 SignalDataReceived; 520 const rtc::CopyOnWriteBuffer&> SignalDataReceived;
521 // Signal for notifying when the channel becomes ready to send data. 521 // Signal for notifying when the channel becomes ready to send data.
522 // That occurs when the channel is enabled, the transport is writable, 522 // That occurs when the channel is enabled, the transport is writable,
523 // both local and remote descriptions are set, and the channel is unblocked. 523 // both local and remote descriptions are set, and the channel is unblocked.
524 sigslot::signal1<bool> SignalReadyToSendData; 524 sigslot::signal1<bool> SignalReadyToSendData;
525 // Signal for notifying that the remote side has closed the DataChannel. 525 // Signal for notifying that the remote side has closed the DataChannel.
526 sigslot::signal1<uint32_t> SignalStreamClosedRemotely; 526 sigslot::signal1<uint32_t> SignalStreamClosedRemotely;
527 527
528 protected: 528 protected:
529 // downcasts a MediaChannel. 529 // downcasts a MediaChannel.
530 virtual DataMediaChannel* media_channel() const { 530 virtual DataMediaChannel* media_channel() const {
531 return static_cast<DataMediaChannel*>(BaseChannel::media_channel()); 531 return static_cast<DataMediaChannel*>(BaseChannel::media_channel());
532 } 532 }
533 533
534 private: 534 private:
535 struct SendDataMessageData : public rtc::MessageData { 535 struct SendDataMessageData : public rtc::MessageData {
536 SendDataMessageData(const SendDataParams& params, 536 SendDataMessageData(const SendDataParams& params,
537 const rtc::Buffer* payload, 537 const rtc::CopyOnWriteBuffer* payload,
538 SendDataResult* result) 538 SendDataResult* result)
539 : params(params), 539 : params(params),
540 payload(payload), 540 payload(payload),
541 result(result), 541 result(result),
542 succeeded(false) { 542 succeeded(false) {
543 } 543 }
544 544
545 const SendDataParams& params; 545 const SendDataParams& params;
546 const rtc::Buffer* payload; 546 const rtc::CopyOnWriteBuffer* payload;
547 SendDataResult* result; 547 SendDataResult* result;
548 bool succeeded; 548 bool succeeded;
549 }; 549 };
550 550
551 struct DataReceivedMessageData : public rtc::MessageData { 551 struct DataReceivedMessageData : public rtc::MessageData {
552 // We copy the data because the data will become invalid after we 552 // We copy the data because the data will become invalid after we
553 // handle DataMediaChannel::SignalDataReceived but before we fire 553 // handle DataMediaChannel::SignalDataReceived but before we fire
554 // SignalDataReceived. 554 // SignalDataReceived.
555 DataReceivedMessageData( 555 DataReceivedMessageData(
556 const ReceiveDataParams& params, const char* data, size_t len) 556 const ReceiveDataParams& params, const char* data, size_t len)
557 : params(params), 557 : params(params),
558 payload(data, len) { 558 payload(data, len) {
559 } 559 }
560 const ReceiveDataParams params; 560 const ReceiveDataParams params;
561 const rtc::Buffer payload; 561 const rtc::CopyOnWriteBuffer payload;
562 }; 562 };
563 563
564 typedef rtc::TypedMessageData<bool> DataChannelReadyToSendMessageData; 564 typedef rtc::TypedMessageData<bool> DataChannelReadyToSendMessageData;
565 565
566 // overrides from BaseChannel 566 // overrides from BaseChannel
567 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc); 567 virtual const ContentInfo* GetFirstContent(const SessionDescription* sdesc);
568 // If data_channel_type_ is DCT_NONE, set it. Otherwise, check that 568 // If data_channel_type_ is DCT_NONE, set it. Otherwise, check that
569 // it's the same as what was set previously. Returns false if it's 569 // it's the same as what was set previously. Returns false if it's
570 // set to one type one type and changed to another type later. 570 // set to one type one type and changed to another type later.
571 bool SetDataChannelType(DataChannelType new_data_channel_type, 571 bool SetDataChannelType(DataChannelType new_data_channel_type,
572 std::string* error_desc); 572 std::string* error_desc);
573 // Same as SetDataChannelType, but extracts the type from the 573 // Same as SetDataChannelType, but extracts the type from the
574 // DataContentDescription. 574 // DataContentDescription.
575 bool SetDataChannelTypeFromContent(const DataContentDescription* content, 575 bool SetDataChannelTypeFromContent(const DataContentDescription* content,
576 std::string* error_desc); 576 std::string* error_desc);
577 virtual bool SetLocalContent_w(const MediaContentDescription* content, 577 virtual bool SetLocalContent_w(const MediaContentDescription* content,
578 ContentAction action, 578 ContentAction action,
579 std::string* error_desc); 579 std::string* error_desc);
580 virtual bool SetRemoteContent_w(const MediaContentDescription* content, 580 virtual bool SetRemoteContent_w(const MediaContentDescription* content,
581 ContentAction action, 581 ContentAction action,
582 std::string* error_desc); 582 std::string* error_desc);
583 virtual void ChangeState(); 583 virtual void ChangeState();
584 virtual bool WantsPacket(bool rtcp, rtc::Buffer* packet); 584 virtual bool WantsPacket(bool rtcp, const rtc::CopyOnWriteBuffer* packet);
585 585
586 virtual void OnMessage(rtc::Message* pmsg); 586 virtual void OnMessage(rtc::Message* pmsg);
587 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const; 587 virtual void GetSrtpCryptoSuites(std::vector<int>* crypto_suites) const;
588 virtual void OnConnectionMonitorUpdate( 588 virtual void OnConnectionMonitorUpdate(
589 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos); 589 ConnectionMonitor* monitor, const std::vector<ConnectionInfo>& infos);
590 virtual void OnMediaMonitorUpdate( 590 virtual void OnMediaMonitorUpdate(
591 DataMediaChannel* media_channel, const DataMediaInfo& info); 591 DataMediaChannel* media_channel, const DataMediaInfo& info);
592 virtual bool ShouldSetupDtlsSrtp() const; 592 virtual bool ShouldSetupDtlsSrtp() const;
593 void OnDataReceived( 593 void OnDataReceived(
594 const ReceiveDataParams& params, const char* data, size_t len); 594 const ReceiveDataParams& params, const char* data, size_t len);
(...skipping 11 matching lines...) Expand all
606 // SetSendParameters. 606 // SetSendParameters.
607 DataSendParameters last_send_params_; 607 DataSendParameters last_send_params_;
608 // Last DataRecvParameters sent down to the media_channel() via 608 // Last DataRecvParameters sent down to the media_channel() via
609 // SetRecvParameters. 609 // SetRecvParameters.
610 DataRecvParameters last_recv_params_; 610 DataRecvParameters last_recv_params_;
611 }; 611 };
612 612
613 } // namespace cricket 613 } // namespace cricket
614 614
615 #endif // WEBRTC_PC_CHANNEL_H_ 615 #endif // WEBRTC_PC_CHANNEL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698