Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 20 matching lines...) Expand all Loading... | |
| 31 #include <string> | 31 #include <string> |
| 32 #include <vector> | 32 #include <vector> |
| 33 | 33 |
| 34 #include "talk/app/webrtc/datachannel.h" | 34 #include "talk/app/webrtc/datachannel.h" |
| 35 #include "talk/app/webrtc/dtmfsender.h" | 35 #include "talk/app/webrtc/dtmfsender.h" |
| 36 #include "talk/app/webrtc/mediacontroller.h" | 36 #include "talk/app/webrtc/mediacontroller.h" |
| 37 #include "talk/app/webrtc/mediastreamprovider.h" | 37 #include "talk/app/webrtc/mediastreamprovider.h" |
| 38 #include "talk/app/webrtc/peerconnectioninterface.h" | 38 #include "talk/app/webrtc/peerconnectioninterface.h" |
| 39 #include "talk/app/webrtc/statstypes.h" | 39 #include "talk/app/webrtc/statstypes.h" |
| 40 #include "talk/media/base/mediachannel.h" | 40 #include "talk/media/base/mediachannel.h" |
| 41 #include "webrtc/p2p/base/session.h" | 41 #include "webrtc/p2p/base/transportcontroller.h" |
| 42 #include "talk/session/media/mediasession.h" | 42 #include "talk/session/media/mediasession.h" |
| 43 #include "webrtc/base/sigslot.h" | 43 #include "webrtc/base/sigslot.h" |
| 44 #include "webrtc/base/sslidentity.h" | 44 #include "webrtc/base/sslidentity.h" |
| 45 #include "webrtc/base/thread.h" | 45 #include "webrtc/base/thread.h" |
| 46 | 46 |
| 47 namespace cricket { | 47 namespace cricket { |
| 48 | 48 |
| 49 class BaseChannel; | |
| 50 class ChannelManager; | 49 class ChannelManager; |
| 51 class DataChannel; | 50 class DataChannel; |
| 52 class StatsReport; | 51 class StatsReport; |
| 53 class VideoCapturer; | 52 class VideoCapturer; |
| 54 class VideoChannel; | 53 class VideoChannel; |
| 55 class VoiceChannel; | 54 class VoiceChannel; |
| 56 | 55 |
| 57 } // namespace cricket | 56 } // namespace cricket |
| 58 | 57 |
| 59 namespace webrtc { | 58 namespace webrtc { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 105 // Called whenever the state changes between receiving and not receiving. | 104 // Called whenever the state changes between receiving and not receiving. |
| 106 virtual void OnIceConnectionReceivingChange(bool receiving) {} | 105 virtual void OnIceConnectionReceivingChange(bool receiving) {} |
| 107 | 106 |
| 108 protected: | 107 protected: |
| 109 ~IceObserver() {} | 108 ~IceObserver() {} |
| 110 | 109 |
| 111 private: | 110 private: |
| 112 RTC_DISALLOW_COPY_AND_ASSIGN(IceObserver); | 111 RTC_DISALLOW_COPY_AND_ASSIGN(IceObserver); |
| 113 }; | 112 }; |
| 114 | 113 |
| 115 class WebRtcSession : public cricket::BaseSession, | 114 // Statistics for all the transports of the session. |
| 116 public AudioProviderInterface, | 115 typedef std::map<std::string, cricket::TransportStats> TransportStatsMap; |
| 116 typedef std::map<std::string, std::string> ProxyTransportMap; | |
| 117 | |
| 118 // TODO(pthatcher): Think of a better name for this. We already have | |
| 119 // a TransportStats in transport.h. Perhaps TransportsStats? | |
| 120 struct SessionStats { | |
| 121 ProxyTransportMap proxy_to_transport; | |
| 122 TransportStatsMap transport_stats; | |
| 123 }; | |
| 124 | |
| 125 // A WebRtcSession manages general session state. This includes negotiation | |
| 126 // of both the application-level and network-level protocols: the former | |
| 127 // defines what will be sent and the latter defines how it will be sent. Each | |
| 128 // network-level protocol is represented by a Transport object. Each Transport | |
| 129 // participates in the network-level negotiation. The individual streams of | |
| 130 // packets are represented by TransportChannels. The application-level protocol | |
| 131 // is represented by SessionDecription objects. | |
| 132 class WebRtcSession : public AudioProviderInterface, | |
| 117 public DataChannelFactory, | 133 public DataChannelFactory, |
| 118 public VideoProviderInterface, | 134 public VideoProviderInterface, |
| 119 public DtmfProviderInterface, | 135 public DtmfProviderInterface, |
| 120 public DataChannelProviderInterface { | 136 public DataChannelProviderInterface, |
| 137 public rtc::MessageHandler, | |
| 138 public sigslot::has_slots<> { | |
| 121 public: | 139 public: |
| 140 enum State { | |
| 141 STATE_INIT = 0, | |
| 142 STATE_SENTINITIATE, // sent initiate, waiting for Accept or Reject | |
| 143 STATE_RECEIVEDINITIATE, // received an initiate. Call Accept or Reject | |
| 144 STATE_SENTPRACCEPT, // sent provisional Accept | |
| 145 STATE_SENTACCEPT, // sent accept. begin connecting transport | |
| 146 STATE_RECEIVEDPRACCEPT, // received provisional Accept, waiting for Accept | |
| 147 STATE_RECEIVEDACCEPT, // received accept. begin connecting transport | |
| 148 STATE_SENTMODIFY, // sent modify, waiting for Accept or Reject | |
| 149 STATE_RECEIVEDMODIFY, // received modify, call Accept or Reject | |
| 150 STATE_SENTREJECT, // sent reject after receiving initiate | |
| 151 STATE_RECEIVEDREJECT, // received reject after sending initiate | |
| 152 STATE_SENTREDIRECT, // sent direct after receiving initiate | |
| 153 STATE_SENTTERMINATE, // sent terminate (any time / either side) | |
| 154 STATE_RECEIVEDTERMINATE, // received terminate (any time / either side) | |
| 155 STATE_INPROGRESS, // session accepted and in progress | |
| 156 STATE_DEINIT, // session is being destroyed | |
|
pthatcher1
2015/10/09 03:28:57
Not all of these are used any more, and almost all
Taylor Brandstetter
2015/10/09 23:02:07
Done.
| |
| 157 }; | |
| 158 | |
| 159 enum Error { | |
| 160 ERROR_NONE = 0, // no error | |
| 161 ERROR_CONTENT = 1, // channel errors in SetLocalContent/SetRemoteContent | |
| 162 ERROR_TRANSPORT = 2, // transport error of some kind | |
| 163 }; | |
| 164 | |
| 122 WebRtcSession(cricket::ChannelManager* channel_manager, | 165 WebRtcSession(cricket::ChannelManager* channel_manager, |
| 123 rtc::Thread* signaling_thread, | 166 rtc::Thread* signaling_thread, |
| 124 rtc::Thread* worker_thread, | 167 rtc::Thread* worker_thread, |
| 125 cricket::PortAllocator* port_allocator, | 168 cricket::PortAllocator* port_allocator, |
| 126 MediaStreamSignaling* mediastream_signaling); | 169 MediaStreamSignaling* mediastream_signaling); |
| 127 virtual ~WebRtcSession(); | 170 virtual ~WebRtcSession(); |
| 128 | 171 |
| 172 // These are const to allow them to be called from const methods. | |
| 173 rtc::Thread* signaling_thread() const { return signaling_thread_; } | |
| 174 rtc::Thread* worker_thread() const { return worker_thread_; } | |
| 175 cricket::PortAllocator* port_allocator() const { return port_allocator_; } | |
| 176 | |
| 177 // The ID of this session. | |
| 178 const std::string& id() const { return sid_; } | |
| 179 | |
| 129 bool Initialize( | 180 bool Initialize( |
| 130 const PeerConnectionFactoryInterface::Options& options, | 181 const PeerConnectionFactoryInterface::Options& options, |
| 131 const MediaConstraintsInterface* constraints, | 182 const MediaConstraintsInterface* constraints, |
| 132 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store, | 183 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store, |
| 133 const PeerConnectionInterface::RTCConfiguration& rtc_configuration); | 184 const PeerConnectionInterface::RTCConfiguration& rtc_configuration); |
| 134 // Deletes the voice, video and data channel and changes the session state | 185 // Deletes the voice, video and data channel and changes the session state |
| 135 // to STATE_RECEIVEDTERMINATE. | 186 // to STATE_RECEIVEDTERMINATE. |
| 136 void Terminate(); | 187 void Terminate(); |
| 137 | 188 |
| 189 // Returns true if we were the initial offerer. | |
| 190 bool initiator() const { return initiator_; } | |
|
pthatcher1
2015/10/09 03:28:57
Maybe call it offerer.
Taylor Brandstetter
2015/10/09 23:02:06
Since there can be multiple offer/answer pairs, I'
| |
| 191 | |
| 192 // Returns the current state of the session. See the enum above for details. | |
| 193 // Each time the state changes, we will fire this signal. | |
| 194 State state() const { return state_; } | |
| 195 sigslot::signal2<WebRtcSession*, State> SignalState; | |
| 196 | |
| 197 // Returns the last error in the session. See the enum above for details. | |
| 198 // Each time the an error occurs, we will fire this signal. | |
| 199 Error error() const { return error_; } | |
| 200 const std::string& error_desc() const { return error_desc_; } | |
| 201 sigslot::signal2<WebRtcSession*, Error> SignalError; | |
|
pthatcher1
2015/10/09 03:28:57
Is this still used? I think we can just remove it
Taylor Brandstetter
2015/10/09 23:02:07
Done.
| |
| 202 | |
| 138 void RegisterIceObserver(IceObserver* observer) { | 203 void RegisterIceObserver(IceObserver* observer) { |
| 139 ice_observer_ = observer; | 204 ice_observer_ = observer; |
| 140 } | 205 } |
| 141 | 206 |
| 142 virtual cricket::VoiceChannel* voice_channel() { | 207 virtual cricket::VoiceChannel* voice_channel() { |
| 143 return voice_channel_.get(); | 208 return voice_channel_.get(); |
| 144 } | 209 } |
| 145 virtual cricket::VideoChannel* video_channel() { | 210 virtual cricket::VideoChannel* video_channel() { |
| 146 return video_channel_.get(); | 211 return video_channel_.get(); |
| 147 } | 212 } |
| 148 virtual cricket::DataChannel* data_channel() { | 213 virtual cricket::DataChannel* data_channel() { |
| 149 return data_channel_.get(); | 214 return data_channel_.get(); |
| 150 } | 215 } |
| 151 | 216 |
| 152 virtual const MediaStreamSignaling* mediastream_signaling() const { | 217 virtual const MediaStreamSignaling* mediastream_signaling() const { |
| 153 return mediastream_signaling_; | 218 return mediastream_signaling_; |
| 154 } | 219 } |
| 155 | 220 |
| 156 void SetSdesPolicy(cricket::SecurePolicy secure_policy); | 221 void SetSdesPolicy(cricket::SecurePolicy secure_policy); |
| 157 cricket::SecurePolicy SdesPolicy() const; | 222 cricket::SecurePolicy SdesPolicy() const; |
| 158 | 223 |
| 159 // Get current ssl role from transport. | 224 // Get current ssl role from transport. |
| 160 bool GetSslRole(rtc::SSLRole* role); | 225 bool GetSslRole(rtc::SSLRole* role); |
| 161 | 226 |
| 162 // Generic error message callback from WebRtcSession. | |
| 163 // TODO - It may be necessary to supply error code as well. | |
| 164 sigslot::signal0<> SignalError; | |
| 165 | |
| 166 void CreateOffer( | 227 void CreateOffer( |
| 167 CreateSessionDescriptionObserver* observer, | 228 CreateSessionDescriptionObserver* observer, |
| 168 const PeerConnectionInterface::RTCOfferAnswerOptions& options); | 229 const PeerConnectionInterface::RTCOfferAnswerOptions& options); |
| 169 void CreateAnswer(CreateSessionDescriptionObserver* observer, | 230 void CreateAnswer(CreateSessionDescriptionObserver* observer, |
| 170 const MediaConstraintsInterface* constraints); | 231 const MediaConstraintsInterface* constraints); |
| 171 // The ownership of |desc| will be transferred after this call. | 232 // The ownership of |desc| will be transferred after this call. |
| 172 bool SetLocalDescription(SessionDescriptionInterface* desc, | 233 bool SetLocalDescription(SessionDescriptionInterface* desc, |
| 173 std::string* err_desc); | 234 std::string* err_desc); |
| 174 // The ownership of |desc| will be transferred after this call. | 235 // The ownership of |desc| will be transferred after this call. |
| 175 bool SetRemoteDescription(SessionDescriptionInterface* desc, | 236 bool SetRemoteDescription(SessionDescriptionInterface* desc, |
| 176 std::string* err_desc); | 237 std::string* err_desc); |
| 177 bool ProcessIceMessage(const IceCandidateInterface* ice_candidate); | 238 bool ProcessIceMessage(const IceCandidateInterface* ice_candidate); |
| 178 | 239 |
| 179 bool SetIceTransports(PeerConnectionInterface::IceTransportsType type); | 240 bool SetIceTransports(PeerConnectionInterface::IceTransportsType type); |
| 180 | 241 |
| 181 cricket::IceConfig ParseIceConfig( | 242 cricket::IceConfig ParseIceConfig( |
| 182 const PeerConnectionInterface::RTCConfiguration& config) const; | 243 const PeerConnectionInterface::RTCConfiguration& config) const; |
| 183 | 244 |
| 245 void SetIceConfig(const cricket::IceConfig& ice_config); | |
| 246 | |
| 247 // Start gathering candidates for any new transports, or transports doing an | |
| 248 // ICE restart. | |
| 249 void MaybeStartGathering(); | |
| 250 | |
| 184 const SessionDescriptionInterface* local_description() const { | 251 const SessionDescriptionInterface* local_description() const { |
| 185 return local_desc_.get(); | 252 return local_desc_.get(); |
| 186 } | 253 } |
| 187 const SessionDescriptionInterface* remote_description() const { | 254 const SessionDescriptionInterface* remote_description() const { |
| 188 return remote_desc_.get(); | 255 return remote_desc_.get(); |
| 189 } | 256 } |
| 257 | |
| 190 // TODO(pthatcher): Cleanup the distinction between | 258 // TODO(pthatcher): Cleanup the distinction between |
| 191 // SessionDescription and SessionDescriptionInterface and remove | 259 // SessionDescription and SessionDescriptionInterface and remove |
| 192 // these if possible. | 260 // these if possible. |
| 193 const cricket::SessionDescription* base_local_description() const { | 261 const cricket::SessionDescription* base_local_description() const { |
| 194 return BaseSession::local_description(); | 262 return local_desc_ ? local_desc_->description() : nullptr; |
|
pthatcher1
2015/10/09 03:28:57
base_ doesn't make sense as a prefix any more. Bu
Taylor Brandstetter
2015/10/09 23:02:06
Actually, the only reason I even kept these around
| |
| 195 } | 263 } |
| 196 const cricket::SessionDescription* base_remote_description() const { | 264 const cricket::SessionDescription* base_remote_description() const { |
| 197 return BaseSession::remote_description(); | 265 return remote_desc_ ? remote_desc_->description() : nullptr; |
| 198 } | 266 } |
| 199 | 267 |
| 200 // Get the id used as a media stream track's "id" field from ssrc. | 268 // Get the id used as a media stream track's "id" field from ssrc. |
| 201 virtual bool GetLocalTrackIdBySsrc(uint32_t ssrc, std::string* track_id); | 269 virtual bool GetLocalTrackIdBySsrc(uint32_t ssrc, std::string* track_id); |
| 202 virtual bool GetRemoteTrackIdBySsrc(uint32_t ssrc, std::string* track_id); | 270 virtual bool GetRemoteTrackIdBySsrc(uint32_t ssrc, std::string* track_id); |
| 203 | 271 |
| 204 // AudioMediaProviderInterface implementation. | 272 // AudioMediaProviderInterface implementation. |
| 205 void SetAudioPlayout(uint32_t ssrc, | 273 void SetAudioPlayout(uint32_t ssrc, |
| 206 bool enable, | 274 bool enable, |
| 207 cricket::AudioRenderer* renderer) override; | 275 cricket::AudioRenderer* renderer) override; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 231 const rtc::Buffer& payload, | 299 const rtc::Buffer& payload, |
| 232 cricket::SendDataResult* result) override; | 300 cricket::SendDataResult* result) override; |
| 233 bool ConnectDataChannel(DataChannel* webrtc_data_channel) override; | 301 bool ConnectDataChannel(DataChannel* webrtc_data_channel) override; |
| 234 void DisconnectDataChannel(DataChannel* webrtc_data_channel) override; | 302 void DisconnectDataChannel(DataChannel* webrtc_data_channel) override; |
| 235 void AddSctpDataStream(int sid) override; | 303 void AddSctpDataStream(int sid) override; |
| 236 void RemoveSctpDataStream(int sid) override; | 304 void RemoveSctpDataStream(int sid) override; |
| 237 bool ReadyToSendData() const override; | 305 bool ReadyToSendData() const override; |
| 238 | 306 |
| 239 // Returns stats for all channels of all transports. | 307 // Returns stats for all channels of all transports. |
| 240 // This avoids exposing the internal structures used to track them. | 308 // This avoids exposing the internal structures used to track them. |
| 241 virtual bool GetTransportStats(cricket::SessionStats* stats); | 309 virtual bool GetTransportStats(SessionStats* stats); |
| 242 | 310 |
| 243 // Get stats for a specific channel | 311 // Get stats for a specific channel |
| 244 bool GetChannelTransportStats(cricket::BaseChannel* ch, | 312 bool GetChannelTransportStats(cricket::BaseChannel* ch, SessionStats* stats); |
| 245 cricket::SessionStats* stats); | |
| 246 | 313 |
| 247 // virtual so it can be mocked in unit tests | 314 // virtual so it can be mocked in unit tests |
| 248 virtual bool GetLocalCertificate( | 315 virtual bool GetLocalCertificate( |
| 249 const std::string& transport_name, | 316 const std::string& transport_name, |
| 250 rtc::scoped_refptr<rtc::RTCCertificate>* certificate); | 317 rtc::scoped_refptr<rtc::RTCCertificate>* certificate); |
| 251 | 318 |
| 252 // Caller owns returned certificate | 319 // Caller owns returned certificate |
| 253 virtual bool GetRemoteSSLCertificate(const std::string& transport_name, | 320 virtual bool GetRemoteSSLCertificate(const std::string& transport_name, |
| 254 rtc::SSLCertificate** cert); | 321 rtc::SSLCertificate** cert); |
| 255 | 322 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 281 | 348 |
| 282 private: | 349 private: |
| 283 // Indicates the type of SessionDescription in a call to SetLocalDescription | 350 // Indicates the type of SessionDescription in a call to SetLocalDescription |
| 284 // and SetRemoteDescription. | 351 // and SetRemoteDescription. |
| 285 enum Action { | 352 enum Action { |
| 286 kOffer, | 353 kOffer, |
| 287 kPrAnswer, | 354 kPrAnswer, |
| 288 kAnswer, | 355 kAnswer, |
| 289 }; | 356 }; |
| 290 | 357 |
| 358 // Handles messages posted to us. | |
| 359 void OnMessage(rtc::Message* pmsg) override; | |
| 360 | |
| 361 // Log session state. | |
| 362 void LogState(State old_state, State new_state); | |
| 363 | |
| 364 // Updates the state, signaling if necessary. | |
| 365 virtual void SetState(State state); | |
| 366 | |
| 367 // Updates the error state, signaling if necessary. | |
| 368 // TODO(ronghuawu): remove the SetError method that doesn't take |error_desc|. | |
| 369 virtual void SetError(Error error, const std::string& error_desc); | |
| 370 | |
| 291 bool UpdateSessionState(Action action, cricket::ContentSource source, | 371 bool UpdateSessionState(Action action, cricket::ContentSource source, |
| 292 std::string* err_desc); | 372 std::string* err_desc); |
| 293 static Action GetAction(const std::string& type); | 373 static Action GetAction(const std::string& type); |
| 294 // Push the media parts of the local or remote session description | 374 // Push the media parts of the local or remote session description |
| 295 // down to all of the channels. | 375 // down to all of the channels. |
| 296 bool PushdownMediaDescription(cricket::ContentAction action, | 376 bool PushdownMediaDescription(cricket::ContentAction action, |
| 297 cricket::ContentSource source, | 377 cricket::ContentSource source, |
| 298 std::string* error_desc); | 378 std::string* error_desc); |
| 299 | 379 |
| 380 bool PushdownTransportDescription(cricket::ContentSource source, | |
| 381 cricket::ContentAction action, | |
| 382 std::string* error_desc); | |
| 383 | |
| 384 // Helper methods to push local and remote transport descriptions. | |
| 385 bool PushdownLocalTransportDescription( | |
| 386 const cricket::SessionDescription* sdesc, | |
| 387 cricket::ContentAction action, | |
| 388 std::string* error_desc); | |
| 389 bool PushdownRemoteTransportDescription( | |
| 390 const cricket::SessionDescription* sdesc, | |
| 391 cricket::ContentAction action, | |
| 392 std::string* error_desc); | |
| 393 | |
| 394 // Returns true and the TransportInfo of the given |content_name| | |
| 395 // from |description|. Returns false if it's not available. | |
| 396 static bool GetTransportDescription( | |
| 397 const cricket::SessionDescription* description, | |
| 398 const std::string& content_name, | |
| 399 cricket::TransportDescription* info); | |
| 400 | |
| 300 cricket::BaseChannel* GetChannel(const std::string& content_name); | 401 cricket::BaseChannel* GetChannel(const std::string& content_name); |
| 301 // Cause all the BaseChannels in the bundle group to have the same | 402 // Cause all the BaseChannels in the bundle group to have the same |
| 302 // transport channel. | 403 // transport channel. |
| 303 bool EnableBundle(const cricket::ContentGroup& bundle); | 404 bool EnableBundle(const cricket::ContentGroup& bundle); |
| 304 | 405 |
| 305 // Enables media channels to allow sending of media. | 406 // Enables media channels to allow sending of media. |
| 306 void EnableChannels(); | 407 void EnableChannels(); |
| 307 // Returns the media index for a local ice candidate given the content name. | 408 // Returns the media index for a local ice candidate given the content name. |
| 308 // Returns false if the local session description does not have a media | 409 // Returns false if the local session description does not have a media |
| 309 // content called |content_name|. | 410 // content called |content_name|. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 376 | 477 |
| 377 // Invoked when TransportController connection completion is signaled. | 478 // Invoked when TransportController connection completion is signaled. |
| 378 // Reports stats for all transports in use. | 479 // Reports stats for all transports in use. |
| 379 void ReportTransportStats(); | 480 void ReportTransportStats(); |
| 380 | 481 |
| 381 // Gather the usage of IPv4/IPv6 as best connection. | 482 // Gather the usage of IPv4/IPv6 as best connection. |
| 382 void ReportBestConnectionState(const cricket::TransportStats& stats); | 483 void ReportBestConnectionState(const cricket::TransportStats& stats); |
| 383 | 484 |
| 384 void ReportNegotiatedCiphers(const cricket::TransportStats& stats); | 485 void ReportNegotiatedCiphers(const cricket::TransportStats& stats); |
| 385 | 486 |
| 487 rtc::Thread* const signaling_thread_; | |
| 488 rtc::Thread* const worker_thread_; | |
| 489 cricket::PortAllocator* const port_allocator_; | |
| 490 | |
| 491 State state_ = STATE_INIT; | |
| 492 Error error_ = ERROR_NONE; | |
| 493 std::string error_desc_; | |
| 494 | |
| 495 const std::string sid_; | |
| 496 bool initiator_ = false; | |
| 497 | |
| 498 rtc::scoped_ptr<cricket::TransportController> transport_controller_; | |
| 386 rtc::scoped_ptr<MediaControllerInterface> media_controller_; | 499 rtc::scoped_ptr<MediaControllerInterface> media_controller_; |
| 387 rtc::scoped_ptr<cricket::VoiceChannel> voice_channel_; | 500 rtc::scoped_ptr<cricket::VoiceChannel> voice_channel_; |
| 388 rtc::scoped_ptr<cricket::VideoChannel> video_channel_; | 501 rtc::scoped_ptr<cricket::VideoChannel> video_channel_; |
| 389 rtc::scoped_ptr<cricket::DataChannel> data_channel_; | 502 rtc::scoped_ptr<cricket::DataChannel> data_channel_; |
| 390 cricket::ChannelManager* channel_manager_; | 503 cricket::ChannelManager* channel_manager_; |
| 391 MediaStreamSignaling* mediastream_signaling_; | 504 MediaStreamSignaling* mediastream_signaling_; |
| 392 IceObserver* ice_observer_; | 505 IceObserver* ice_observer_; |
| 393 PeerConnectionInterface::IceConnectionState ice_connection_state_; | 506 PeerConnectionInterface::IceConnectionState ice_connection_state_; |
| 394 bool ice_connection_receiving_; | 507 bool ice_connection_receiving_; |
| 395 rtc::scoped_ptr<SessionDescriptionInterface> local_desc_; | 508 rtc::scoped_ptr<SessionDescriptionInterface> local_desc_; |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 425 PeerConnectionInterface::BundlePolicy bundle_policy_; | 538 PeerConnectionInterface::BundlePolicy bundle_policy_; |
| 426 | 539 |
| 427 // Declares the RTCP mux policy for the WebRTCSession. | 540 // Declares the RTCP mux policy for the WebRTCSession. |
| 428 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_; | 541 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy_; |
| 429 | 542 |
| 430 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); | 543 RTC_DISALLOW_COPY_AND_ASSIGN(WebRtcSession); |
| 431 }; | 544 }; |
| 432 } // namespace webrtc | 545 } // namespace webrtc |
| 433 | 546 |
| 434 #endif // TALK_APP_WEBRTC_WEBRTCSESSION_H_ | 547 #endif // TALK_APP_WEBRTC_WEBRTCSESSION_H_ |
| OLD | NEW |