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

Side by Side Diff: webrtc/api/webrtcsession.h

Issue 2590753002: Implement current/pending session description methods. (Closed)
Patch Set: Fixing null pointer deref. Created 3 years, 12 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/api/peerconnectionproxy.h ('k') | webrtc/api/webrtcsession.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 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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 cricket::IceConfig ParseIceConfig( 240 cricket::IceConfig ParseIceConfig(
241 const PeerConnectionInterface::RTCConfiguration& config) const; 241 const PeerConnectionInterface::RTCConfiguration& config) const;
242 242
243 void SetIceConfig(const cricket::IceConfig& ice_config); 243 void SetIceConfig(const cricket::IceConfig& ice_config);
244 244
245 // Start gathering candidates for any new transports, or transports doing an 245 // Start gathering candidates for any new transports, or transports doing an
246 // ICE restart. 246 // ICE restart.
247 void MaybeStartGathering(); 247 void MaybeStartGathering();
248 248
249 const SessionDescriptionInterface* local_description() const { 249 const SessionDescriptionInterface* local_description() const {
250 return local_desc_.get(); 250 return pending_local_description_ ? pending_local_description_.get()
251 : current_local_description_.get();
251 } 252 }
252 const SessionDescriptionInterface* remote_description() const { 253 const SessionDescriptionInterface* remote_description() const {
253 return remote_desc_.get(); 254 return pending_remote_description_ ? pending_remote_description_.get()
255 : current_remote_description_.get();
256 }
257 const SessionDescriptionInterface* current_local_description() const {
258 return current_local_description_.get();
259 }
260 const SessionDescriptionInterface* current_remote_description() const {
261 return current_remote_description_.get();
262 }
263 const SessionDescriptionInterface* pending_local_description() const {
264 return pending_local_description_.get();
265 }
266 const SessionDescriptionInterface* pending_remote_description() const {
267 return pending_remote_description_.get();
254 } 268 }
255 269
256 // Get the id used as a media stream track's "id" field from ssrc. 270 // Get the id used as a media stream track's "id" field from ssrc.
257 virtual bool GetLocalTrackIdBySsrc(uint32_t ssrc, std::string* track_id); 271 virtual bool GetLocalTrackIdBySsrc(uint32_t ssrc, std::string* track_id);
258 virtual bool GetRemoteTrackIdBySsrc(uint32_t ssrc, std::string* track_id); 272 virtual bool GetRemoteTrackIdBySsrc(uint32_t ssrc, std::string* track_id);
259 273
260 // Implements DtmfProviderInterface. 274 // Implements DtmfProviderInterface.
261 bool CanInsertDtmf(const std::string& track_id) override; 275 bool CanInsertDtmf(const std::string& track_id) override;
262 bool InsertDtmf(const std::string& track_id, 276 bool InsertDtmf(const std::string& track_id,
263 int code, int duration) override; 277 int code, int duration) override;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 361
348 private: 362 private:
349 // Indicates the type of SessionDescription in a call to SetLocalDescription 363 // Indicates the type of SessionDescription in a call to SetLocalDescription
350 // and SetRemoteDescription. 364 // and SetRemoteDescription.
351 enum Action { 365 enum Action {
352 kOffer, 366 kOffer,
353 kPrAnswer, 367 kPrAnswer,
354 kAnswer, 368 kAnswer,
355 }; 369 };
356 370
371 // Non-const versions of local_description()/remote_description(), for use
372 // internally.
373 SessionDescriptionInterface* mutable_local_description() {
374 return pending_local_description_ ? pending_local_description_.get()
375 : current_local_description_.get();
376 }
377 SessionDescriptionInterface* mutable_remote_description() {
378 return pending_remote_description_ ? pending_remote_description_.get()
379 : current_remote_description_.get();
380 }
381
357 // Log session state. 382 // Log session state.
358 void LogState(State old_state, State new_state); 383 void LogState(State old_state, State new_state);
359 384
360 // Updates the state, signaling if necessary. 385 // Updates the state, signaling if necessary.
361 virtual void SetState(State state); 386 virtual void SetState(State state);
362 387
363 // Updates the error state, signaling if necessary. 388 // Updates the error state, signaling if necessary.
364 // TODO(ronghuawu): remove the SetError method that doesn't take |error_desc|. 389 // TODO(ronghuawu): remove the SetError method that doesn't take |error_desc|.
365 virtual void SetError(Error error, const std::string& error_desc); 390 virtual void SetError(Error error, const std::string& error_desc);
366 391
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 537
513 const std::unique_ptr<cricket::TransportController> transport_controller_; 538 const std::unique_ptr<cricket::TransportController> transport_controller_;
514 MediaControllerInterface* media_controller_; 539 MediaControllerInterface* media_controller_;
515 std::unique_ptr<cricket::VoiceChannel> voice_channel_; 540 std::unique_ptr<cricket::VoiceChannel> voice_channel_;
516 std::unique_ptr<cricket::VideoChannel> video_channel_; 541 std::unique_ptr<cricket::VideoChannel> video_channel_;
517 std::unique_ptr<cricket::DataChannel> data_channel_; 542 std::unique_ptr<cricket::DataChannel> data_channel_;
518 cricket::ChannelManager* channel_manager_; 543 cricket::ChannelManager* channel_manager_;
519 IceObserver* ice_observer_; 544 IceObserver* ice_observer_;
520 PeerConnectionInterface::IceConnectionState ice_connection_state_; 545 PeerConnectionInterface::IceConnectionState ice_connection_state_;
521 bool ice_connection_receiving_; 546 bool ice_connection_receiving_;
522 std::unique_ptr<SessionDescriptionInterface> local_desc_; 547 std::unique_ptr<SessionDescriptionInterface> current_local_description_;
523 std::unique_ptr<SessionDescriptionInterface> remote_desc_; 548 std::unique_ptr<SessionDescriptionInterface> pending_local_description_;
549 std::unique_ptr<SessionDescriptionInterface> current_remote_description_;
550 std::unique_ptr<SessionDescriptionInterface> pending_remote_description_;
524 // If the remote peer is using a older version of implementation. 551 // If the remote peer is using a older version of implementation.
525 bool older_version_remote_peer_; 552 bool older_version_remote_peer_;
526 bool dtls_enabled_; 553 bool dtls_enabled_;
527 // Specifies which kind of data channel is allowed. This is controlled 554 // Specifies which kind of data channel is allowed. This is controlled
528 // by the chrome command-line flag and constraints: 555 // by the chrome command-line flag and constraints:
529 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled, 556 // 1. If chrome command-line switch 'enable-sctp-data-channels' is enabled,
530 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is 557 // constraint kEnableDtlsSrtp is true, and constaint kEnableRtpDataChannels is
531 // not set or false, SCTP is allowed (DCT_SCTP); 558 // not set or false, SCTP is allowed (DCT_SCTP);
532 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP); 559 // 2. If constraint kEnableRtpDataChannels is true, RTP is allowed (DCT_RTP);
533 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE). 560 // 3. If both 1&2 are false, data channel is not allowed (DCT_NONE).
(...skipping 21 matching lines...) Expand all
555 582
556 #ifdef HAVE_QUIC 583 #ifdef HAVE_QUIC
557 std::unique_ptr<QuicDataTransport> quic_data_transport_; 584 std::unique_ptr<QuicDataTransport> quic_data_transport_;
558 #endif // HAVE_QUIC 585 #endif // HAVE_QUIC
559 586
560 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); 587 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession);
561 }; 588 };
562 } // namespace webrtc 589 } // namespace webrtc
563 590
564 #endif // WEBRTC_API_WEBRTCSESSION_H_ 591 #endif // WEBRTC_API_WEBRTCSESSION_H_
OLDNEW
« no previous file with comments | « webrtc/api/peerconnectionproxy.h ('k') | webrtc/api/webrtcsession.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698