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

Side by Side Diff: talk/app/webrtc/webrtcsession.h

Issue 1393563002: Moving MediaStreamSignaling logic into PeerConnection. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleaning up comments, fixing naming, etc. Created 5 years, 2 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 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 107
108 protected: 108 protected:
109 ~IceObserver() {} 109 ~IceObserver() {}
110 110
111 private: 111 private:
112 RTC_DISALLOW_COPY_AND_ASSIGN(IceObserver); 112 RTC_DISALLOW_COPY_AND_ASSIGN(IceObserver);
113 }; 113 };
114 114
115 class WebRtcSession : public cricket::BaseSession, 115 class WebRtcSession : public cricket::BaseSession,
116 public AudioProviderInterface, 116 public AudioProviderInterface,
117 public DataChannelFactory,
118 public VideoProviderInterface, 117 public VideoProviderInterface,
119 public DtmfProviderInterface, 118 public DtmfProviderInterface,
120 public DataChannelProviderInterface { 119 public DataChannelProviderInterface {
121 public: 120 public:
122 WebRtcSession(cricket::ChannelManager* channel_manager, 121 WebRtcSession(cricket::ChannelManager* channel_manager,
123 rtc::Thread* signaling_thread, 122 rtc::Thread* signaling_thread,
124 rtc::Thread* worker_thread, 123 rtc::Thread* worker_thread,
125 cricket::PortAllocator* port_allocator, 124 cricket::PortAllocator* port_allocator);
126 MediaStreamSignaling* mediastream_signaling);
127 virtual ~WebRtcSession(); 125 virtual ~WebRtcSession();
128 126
129 bool Initialize( 127 bool Initialize(
130 const PeerConnectionFactoryInterface::Options& options, 128 const PeerConnectionFactoryInterface::Options& options,
131 const MediaConstraintsInterface* constraints, 129 const MediaConstraintsInterface* constraints,
132 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store, 130 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
133 const PeerConnectionInterface::RTCConfiguration& rtc_configuration); 131 const PeerConnectionInterface::RTCConfiguration& rtc_configuration);
134 // Deletes the voice, video and data channel and changes the session state 132 // Deletes the voice, video and data channel and changes the session state
135 // to STATE_RECEIVEDTERMINATE. 133 // to STATE_RECEIVEDTERMINATE.
136 void Terminate(); 134 void Terminate();
137 135
138 void RegisterIceObserver(IceObserver* observer) { 136 void RegisterIceObserver(IceObserver* observer) {
139 ice_observer_ = observer; 137 ice_observer_ = observer;
140 } 138 }
141 139
142 virtual cricket::VoiceChannel* voice_channel() { 140 virtual cricket::VoiceChannel* voice_channel() {
143 return voice_channel_.get(); 141 return voice_channel_.get();
144 } 142 }
145 virtual cricket::VideoChannel* video_channel() { 143 virtual cricket::VideoChannel* video_channel() {
146 return video_channel_.get(); 144 return video_channel_.get();
147 } 145 }
148 virtual cricket::DataChannel* data_channel() { 146 virtual cricket::DataChannel* data_channel() {
149 return data_channel_.get(); 147 return data_channel_.get();
150 } 148 }
151 149
152 virtual const MediaStreamSignaling* mediastream_signaling() const {
153 return mediastream_signaling_;
154 }
155
156 void SetSdesPolicy(cricket::SecurePolicy secure_policy); 150 void SetSdesPolicy(cricket::SecurePolicy secure_policy);
157 cricket::SecurePolicy SdesPolicy() const; 151 cricket::SecurePolicy SdesPolicy() const;
158 152
159 // Get current ssl role from transport. 153 // Get current ssl role from transport.
160 bool GetSslRole(rtc::SSLRole* role); 154 bool GetSslRole(rtc::SSLRole* role);
161 155
162 // Generic error message callback from WebRtcSession. 156 // Generic error message callback from WebRtcSession.
163 // TODO - It may be necessary to supply error code as well. 157 // TODO - It may be necessary to supply error code as well.
164 sigslot::signal0<> SignalError; 158 sigslot::signal0<> SignalError;
165 159
166 void CreateOffer( 160 void CreateOffer(
167 CreateSessionDescriptionObserver* observer, 161 CreateSessionDescriptionObserver* observer,
168 const PeerConnectionInterface::RTCOfferAnswerOptions& options); 162 const PeerConnectionInterface::RTCOfferAnswerOptions& options,
163 const cricket::MediaSessionOptions& session_options);
169 void CreateAnswer(CreateSessionDescriptionObserver* observer, 164 void CreateAnswer(CreateSessionDescriptionObserver* observer,
170 const MediaConstraintsInterface* constraints); 165 const MediaConstraintsInterface* constraints,
166 const cricket::MediaSessionOptions& session_options);
171 // The ownership of |desc| will be transferred after this call. 167 // The ownership of |desc| will be transferred after this call.
172 bool SetLocalDescription(SessionDescriptionInterface* desc, 168 bool SetLocalDescription(SessionDescriptionInterface* desc,
173 std::string* err_desc); 169 std::string* err_desc);
174 // The ownership of |desc| will be transferred after this call. 170 // The ownership of |desc| will be transferred after this call.
175 bool SetRemoteDescription(SessionDescriptionInterface* desc, 171 bool SetRemoteDescription(SessionDescriptionInterface* desc,
176 std::string* err_desc); 172 std::string* err_desc);
177 bool ProcessIceMessage(const IceCandidateInterface* ice_candidate); 173 bool ProcessIceMessage(const IceCandidateInterface* ice_candidate);
178 174
179 bool SetIceTransports(PeerConnectionInterface::IceTransportsType type); 175 bool SetIceTransports(PeerConnectionInterface::IceTransportsType type);
180 176
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 242
247 // virtual so it can be mocked in unit tests 243 // virtual so it can be mocked in unit tests
248 virtual bool GetLocalCertificate( 244 virtual bool GetLocalCertificate(
249 const std::string& transport_name, 245 const std::string& transport_name,
250 rtc::scoped_refptr<rtc::RTCCertificate>* certificate); 246 rtc::scoped_refptr<rtc::RTCCertificate>* certificate);
251 247
252 // Caller owns returned certificate 248 // Caller owns returned certificate
253 virtual bool GetRemoteSSLCertificate(const std::string& transport_name, 249 virtual bool GetRemoteSSLCertificate(const std::string& transport_name,
254 rtc::SSLCertificate** cert); 250 rtc::SSLCertificate** cert);
255 251
256 // Implements DataChannelFactory.
257 rtc::scoped_refptr<DataChannel> CreateDataChannel(
258 const std::string& label,
259 const InternalDataChannelInit* config) override;
260
261 cricket::DataChannelType data_channel_type() const; 252 cricket::DataChannelType data_channel_type() const;
262 253
263 bool IceRestartPending() const; 254 bool IceRestartPending() const;
264 255
265 void ResetIceRestartLatch(); 256 void ResetIceRestartLatch();
266 257
267 // Called when an RTCCertificate is generated or retrieved by 258 // Called when an RTCCertificate is generated or retrieved by
268 // WebRTCSessionDescriptionFactory. Should happen before setLocalDescription. 259 // WebRTCSessionDescriptionFactory. Should happen before setLocalDescription.
269 void OnCertificateReady( 260 void OnCertificateReady(
270 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate); 261 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate);
271 void OnDtlsSetupFailure(cricket::BaseChannel*, bool rtcp); 262 void OnDtlsSetupFailure(cricket::BaseChannel*, bool rtcp);
272 263
273 // For unit test. 264 // For unit test.
274 bool waiting_for_certificate_for_testing() const; 265 bool waiting_for_certificate_for_testing() const;
275 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate_for_testing(); 266 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate_for_testing();
276 267
277 void set_metrics_observer( 268 void set_metrics_observer(
278 webrtc::MetricsObserverInterface* metrics_observer) { 269 webrtc::MetricsObserverInterface* metrics_observer) {
279 metrics_observer_ = metrics_observer; 270 metrics_observer_ = metrics_observer;
280 } 271 }
281 272
273 sigslot::signal0<> SignalVoiceChannelDestroyed;
274 sigslot::signal0<> SignalVideoChannelDestroyed;
275 sigslot::signal0<> SignalDataChannelCreated;
276 sigslot::signal0<> SignalDataChannelDestroyed;
pthatcher1 2015/10/07 02:50:51 Can you comment when these will be fired?
Taylor Brandstetter 2015/10/09 19:54:09 Done. I also added "SignalVoiceChannelCreated" and
277 sigslot::signal2<const std::string&, const InternalDataChannelInit&>
278 SignalDataChannelCreationRequested;
pthatcher1 2015/10/07 02:50:51 Can you comment what the parameters of this?
Taylor Brandstetter 2015/10/09 19:54:09 Done.
279
282 private: 280 private:
283 // Indicates the type of SessionDescription in a call to SetLocalDescription 281 // Indicates the type of SessionDescription in a call to SetLocalDescription
284 // and SetRemoteDescription. 282 // and SetRemoteDescription.
285 enum Action { 283 enum Action {
286 kOffer, 284 kOffer,
287 kPrAnswer, 285 kPrAnswer,
288 kAnswer, 286 kAnswer,
289 }; 287 };
290 288
291 bool UpdateSessionState(Action action, cricket::ContentSource source, 289 bool UpdateSessionState(Action action, cricket::ContentSource source,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 // Gather the usage of IPv4/IPv6 as best connection. 379 // Gather the usage of IPv4/IPv6 as best connection.
382 void ReportBestConnectionState(const cricket::TransportStats& stats); 380 void ReportBestConnectionState(const cricket::TransportStats& stats);
383 381
384 void ReportNegotiatedCiphers(const cricket::TransportStats& stats); 382 void ReportNegotiatedCiphers(const cricket::TransportStats& stats);
385 383
386 rtc::scoped_ptr<MediaControllerInterface> media_controller_; 384 rtc::scoped_ptr<MediaControllerInterface> media_controller_;
387 rtc::scoped_ptr<cricket::VoiceChannel> voice_channel_; 385 rtc::scoped_ptr<cricket::VoiceChannel> voice_channel_;
388 rtc::scoped_ptr<cricket::VideoChannel> video_channel_; 386 rtc::scoped_ptr<cricket::VideoChannel> video_channel_;
389 rtc::scoped_ptr<cricket::DataChannel> data_channel_; 387 rtc::scoped_ptr<cricket::DataChannel> data_channel_;
390 cricket::ChannelManager* channel_manager_; 388 cricket::ChannelManager* channel_manager_;
391 MediaStreamSignaling* mediastream_signaling_;
392 IceObserver* ice_observer_; 389 IceObserver* ice_observer_;
393 PeerConnectionInterface::IceConnectionState ice_connection_state_; 390 PeerConnectionInterface::IceConnectionState ice_connection_state_;
394 bool ice_connection_receiving_; 391 bool ice_connection_receiving_;
395 rtc::scoped_ptr<SessionDescriptionInterface> local_desc_; 392 rtc::scoped_ptr<SessionDescriptionInterface> local_desc_;
396 rtc::scoped_ptr<SessionDescriptionInterface> remote_desc_; 393 rtc::scoped_ptr<SessionDescriptionInterface> remote_desc_;
397 // Candidates that arrived before the remote description was set. 394 // Candidates that arrived before the remote description was set.
398 std::vector<IceCandidateInterface*> saved_candidates_; 395 std::vector<IceCandidateInterface*> saved_candidates_;
399 // If the remote peer is using a older version of implementation. 396 // If the remote peer is using a older version of implementation.
400 bool older_version_remote_peer_; 397 bool older_version_remote_peer_;
401 bool dtls_enabled_; 398 bool dtls_enabled_;
402 // Specifies which kind of data channel is allowed. This is controlled 399 // Specifies which kind of data channel is allowed. This is controlled
403 // by the chrome command-line flag and constraints: 400 // by the chrome command-line flag and constraints:
404 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled, 401 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled,
405 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is 402 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is
406 // not set or false, SCTP is allowed (DCT_SCTP); 403 // not set or false, SCTP is allowed (DCT_SCTP);
407 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP); 404 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP);
408 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE). 405 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE).
409 cricket::DataChannelType data_channel_type_; 406 cricket::DataChannelType data_channel_type_;
410 rtc::scoped_ptr<IceRestartAnswerLatch> ice_restart_latch_; 407 rtc::scoped_ptr<IceRestartAnswerLatch> ice_restart_latch_;
411 408
412 rtc::scoped_ptr<WebRtcSessionDescriptionFactory> 409 rtc::scoped_ptr<WebRtcSessionDescriptionFactory>
413 webrtc_session_desc_factory_; 410 webrtc_session_desc_factory_;
414 411
415 sigslot::signal0<> SignalVoiceChannelDestroyed;
416 sigslot::signal0<> SignalVideoChannelDestroyed;
417 sigslot::signal0<> SignalDataChannelDestroyed;
418
419 // Member variables for caching global options. 412 // Member variables for caching global options.
420 cricket::AudioOptions audio_options_; 413 cricket::AudioOptions audio_options_;
421 cricket::VideoOptions video_options_; 414 cricket::VideoOptions video_options_;
422 MetricsObserverInterface* metrics_observer_; 415 MetricsObserverInterface* metrics_observer_;
423 416
424 // Declares the bundle policy for the WebRTCSession. 417 // Declares the bundle policy for the WebRTCSession.
425 PeerConnectionInterface::BundlePolicy bundle_policy_; 418 PeerConnectionInterface::BundlePolicy bundle_policy_;
426 419
427 // Declares the RTCP mux policy for the WebRTCSession. 420 // Declares the RTCP mux policy for the WebRTCSession.
428 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_; 421 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_;
429 422
430 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); 423 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession);
431 }; 424 };
432 } // namespace webrtc 425 } // namespace webrtc
433 426
434 #endif // TALK_APP_WEBRTC_WEBRTCSESSION_H_ 427 #endif // TALK_APP_WEBRTC_WEBRTCSESSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698