OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2012 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 12 matching lines...) Expand all Loading... |
23 #include "webrtc/api/statstypes.h" | 23 #include "webrtc/api/statstypes.h" |
24 #include "webrtc/base/constructormagic.h" | 24 #include "webrtc/base/constructormagic.h" |
25 #include "webrtc/base/sigslot.h" | 25 #include "webrtc/base/sigslot.h" |
26 #include "webrtc/base/sslidentity.h" | 26 #include "webrtc/base/sslidentity.h" |
27 #include "webrtc/base/thread.h" | 27 #include "webrtc/base/thread.h" |
28 #include "webrtc/media/base/mediachannel.h" | 28 #include "webrtc/media/base/mediachannel.h" |
29 #include "webrtc/p2p/base/candidate.h" | 29 #include "webrtc/p2p/base/candidate.h" |
30 #include "webrtc/p2p/base/transportcontroller.h" | 30 #include "webrtc/p2p/base/transportcontroller.h" |
31 #include "webrtc/pc/mediasession.h" | 31 #include "webrtc/pc/mediasession.h" |
32 | 32 |
| 33 #ifdef HAVE_QUIC |
| 34 #include "webrtc/api/quicdatatransport.h" |
| 35 #endif // HAVE_QUIC |
| 36 |
33 namespace cricket { | 37 namespace cricket { |
34 | 38 |
35 class ChannelManager; | 39 class ChannelManager; |
36 class DataChannel; | 40 class DataChannel; |
37 class StatsReport; | 41 class StatsReport; |
38 class VideoChannel; | 42 class VideoChannel; |
39 class VoiceChannel; | 43 class VoiceChannel; |
40 | 44 |
| 45 #ifdef HAVE_QUIC |
| 46 class QuicTransportChannel; |
| 47 #endif // HAVE_QUIC |
| 48 |
41 } // namespace cricket | 49 } // namespace cricket |
42 | 50 |
43 namespace webrtc { | 51 namespace webrtc { |
44 | 52 |
45 class IceRestartAnswerLatch; | 53 class IceRestartAnswerLatch; |
46 class JsepIceCandidate; | 54 class JsepIceCandidate; |
47 class MediaStreamSignaling; | 55 class MediaStreamSignaling; |
48 class WebRtcSessionDescriptionFactory; | 56 class WebRtcSessionDescriptionFactory; |
49 | 57 |
50 extern const char kBundleWithoutRtcpMux[]; | 58 extern const char kBundleWithoutRtcpMux[]; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 WebRtcSession( | 147 WebRtcSession( |
140 webrtc::MediaControllerInterface* media_controller, | 148 webrtc::MediaControllerInterface* media_controller, |
141 rtc::Thread* network_thread, | 149 rtc::Thread* network_thread, |
142 rtc::Thread* worker_thread, | 150 rtc::Thread* worker_thread, |
143 rtc::Thread* signaling_thread, | 151 rtc::Thread* signaling_thread, |
144 cricket::PortAllocator* port_allocator, | 152 cricket::PortAllocator* port_allocator, |
145 std::unique_ptr<cricket::TransportController> transport_controller); | 153 std::unique_ptr<cricket::TransportController> transport_controller); |
146 virtual ~WebRtcSession(); | 154 virtual ~WebRtcSession(); |
147 | 155 |
148 // These are const to allow them to be called from const methods. | 156 // These are const to allow them to be called from const methods. |
| 157 rtc::Thread* network_thread() const { return network_thread_; } |
149 rtc::Thread* worker_thread() const { return worker_thread_; } | 158 rtc::Thread* worker_thread() const { return worker_thread_; } |
150 rtc::Thread* signaling_thread() const { return signaling_thread_; } | 159 rtc::Thread* signaling_thread() const { return signaling_thread_; } |
151 | 160 |
152 // The ID of this session. | 161 // The ID of this session. |
153 const std::string& id() const { return sid_; } | 162 const std::string& id() const { return sid_; } |
154 | 163 |
155 bool Initialize( | 164 bool Initialize( |
156 const PeerConnectionFactoryInterface::Options& options, | 165 const PeerConnectionFactoryInterface::Options& options, |
157 std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator, | 166 std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator, |
158 const PeerConnectionInterface::RTCConfiguration& rtc_configuration); | 167 const PeerConnectionInterface::RTCConfiguration& rtc_configuration); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 sigslot::signal0<> SignalVideoChannelDestroyed; | 303 sigslot::signal0<> SignalVideoChannelDestroyed; |
295 sigslot::signal0<> SignalDataChannelCreated; | 304 sigslot::signal0<> SignalDataChannelCreated; |
296 sigslot::signal0<> SignalDataChannelDestroyed; | 305 sigslot::signal0<> SignalDataChannelDestroyed; |
297 // Called when the whole session is destroyed. | 306 // Called when the whole session is destroyed. |
298 sigslot::signal0<> SignalDestroyed; | 307 sigslot::signal0<> SignalDestroyed; |
299 | 308 |
300 // Called when a valid data channel OPEN message is received. | 309 // Called when a valid data channel OPEN message is received. |
301 // std::string represents the data channel label. | 310 // std::string represents the data channel label. |
302 sigslot::signal2<const std::string&, const InternalDataChannelInit&> | 311 sigslot::signal2<const std::string&, const InternalDataChannelInit&> |
303 SignalDataChannelOpenMessage; | 312 SignalDataChannelOpenMessage; |
| 313 #ifdef HAVE_QUIC |
| 314 QuicDataTransport* quic_data_transport() { |
| 315 return quic_data_transport_.get(); |
| 316 } |
| 317 #endif // HAVE_QUIC |
304 | 318 |
305 private: | 319 private: |
306 // Indicates the type of SessionDescription in a call to SetLocalDescription | 320 // Indicates the type of SessionDescription in a call to SetLocalDescription |
307 // and SetRemoteDescription. | 321 // and SetRemoteDescription. |
308 enum Action { | 322 enum Action { |
309 kOffer, | 323 kOffer, |
310 kPrAnswer, | 324 kPrAnswer, |
311 kAnswer, | 325 kAnswer, |
312 }; | 326 }; |
313 | 327 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 // Reports stats for all transports in use. | 452 // Reports stats for all transports in use. |
439 void ReportTransportStats(); | 453 void ReportTransportStats(); |
440 | 454 |
441 // Gather the usage of IPv4/IPv6 as best connection. | 455 // Gather the usage of IPv4/IPv6 as best connection. |
442 void ReportBestConnectionState(const cricket::TransportStats& stats); | 456 void ReportBestConnectionState(const cricket::TransportStats& stats); |
443 | 457 |
444 void ReportNegotiatedCiphers(const cricket::TransportStats& stats); | 458 void ReportNegotiatedCiphers(const cricket::TransportStats& stats); |
445 | 459 |
446 void OnSentPacket_w(const rtc::SentPacket& sent_packet); | 460 void OnSentPacket_w(const rtc::SentPacket& sent_packet); |
447 | 461 |
| 462 const std::string GetTransportName(const std::string& content_name); |
| 463 |
| 464 rtc::Thread* const network_thread_; |
448 rtc::Thread* const worker_thread_; | 465 rtc::Thread* const worker_thread_; |
449 rtc::Thread* const signaling_thread_; | 466 rtc::Thread* const signaling_thread_; |
450 | 467 |
451 State state_ = STATE_INIT; | 468 State state_ = STATE_INIT; |
452 Error error_ = ERROR_NONE; | 469 Error error_ = ERROR_NONE; |
453 std::string error_desc_; | 470 std::string error_desc_; |
454 | 471 |
455 const std::string sid_; | 472 const std::string sid_; |
456 bool initial_offerer_ = false; | 473 bool initial_offerer_ = false; |
457 | 474 |
(...skipping 11 matching lines...) Expand all Loading... |
469 // If the remote peer is using a older version of implementation. | 486 // If the remote peer is using a older version of implementation. |
470 bool older_version_remote_peer_; | 487 bool older_version_remote_peer_; |
471 bool dtls_enabled_; | 488 bool dtls_enabled_; |
472 // Specifies which kind of data channel is allowed. This is controlled | 489 // Specifies which kind of data channel is allowed. This is controlled |
473 // by the chrome command-line flag and constraints: | 490 // by the chrome command-line flag and constraints: |
474 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled, | 491 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled, |
475 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is | 492 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is |
476 // not set or false, SCTP is allowed (DCT_SCTP); | 493 // not set or false, SCTP is allowed (DCT_SCTP); |
477 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP); | 494 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP); |
478 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE). | 495 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE). |
| 496 // The data channel type could be DCT_QUIC if the QUIC data channel is |
| 497 // enabled. |
479 cricket::DataChannelType data_channel_type_; | 498 cricket::DataChannelType data_channel_type_; |
480 // List of content names for which the remote side triggered an ICE restart. | 499 // List of content names for which the remote side triggered an ICE restart. |
481 std::set<std::string> pending_ice_restarts_; | 500 std::set<std::string> pending_ice_restarts_; |
482 | 501 |
483 std::unique_ptr<WebRtcSessionDescriptionFactory> webrtc_session_desc_factory_; | 502 std::unique_ptr<WebRtcSessionDescriptionFactory> webrtc_session_desc_factory_; |
484 | 503 |
485 // Member variables for caching global options. | 504 // Member variables for caching global options. |
486 cricket::AudioOptions audio_options_; | 505 cricket::AudioOptions audio_options_; |
487 cricket::VideoOptions video_options_; | 506 cricket::VideoOptions video_options_; |
488 MetricsObserverInterface* metrics_observer_; | 507 MetricsObserverInterface* metrics_observer_; |
489 | 508 |
490 // Declares the bundle policy for the WebRTCSession. | 509 // Declares the bundle policy for the WebRTCSession. |
491 PeerConnectionInterface::BundlePolicy bundle_policy_; | 510 PeerConnectionInterface::BundlePolicy bundle_policy_; |
492 | 511 |
493 // Declares the RTCP mux policy for the WebRTCSession. | 512 // Declares the RTCP mux policy for the WebRTCSession. |
494 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_; | 513 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_; |
495 | 514 |
496 bool received_first_video_packet_ = false; | 515 bool received_first_video_packet_ = false; |
497 bool received_first_audio_packet_ = false; | 516 bool received_first_audio_packet_ = false; |
498 | 517 |
| 518 #ifdef HAVE_QUIC |
| 519 std::unique_ptr<QuicDataTransport> quic_data_transport_; |
| 520 #endif // HAVE_QUIC |
| 521 |
499 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); | 522 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); |
500 }; | 523 }; |
501 } // namespace webrtc | 524 } // namespace webrtc |
502 | 525 |
503 #endif // WEBRTC_API_WEBRTCSESSION_H_ | 526 #endif // WEBRTC_API_WEBRTCSESSION_H_ |
OLD | NEW |