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

Side by Side Diff: webrtc/api/peerconnectionfactory.cc

Issue 2020633002: Revert of Replacing DtlsIdentityStoreInterface with RTCCertificateGeneratorInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 6 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/peerconnectionfactory.h ('k') | webrtc/api/peerconnectionfactoryproxy.h » ('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 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 18 matching lines...) Expand all
29 #include "webrtc/media/engine/webrtcvideodecoderfactory.h" 29 #include "webrtc/media/engine/webrtcvideodecoderfactory.h"
30 #include "webrtc/media/engine/webrtcvideoencoderfactory.h" 30 #include "webrtc/media/engine/webrtcvideoencoderfactory.h"
31 #include "webrtc/modules/audio_device/include/audio_device.h" 31 #include "webrtc/modules/audio_device/include/audio_device.h"
32 #include "webrtc/p2p/base/basicpacketsocketfactory.h" 32 #include "webrtc/p2p/base/basicpacketsocketfactory.h"
33 #include "webrtc/p2p/client/basicportallocator.h" 33 #include "webrtc/p2p/client/basicportallocator.h"
34 34
35 namespace webrtc { 35 namespace webrtc {
36 36
37 namespace { 37 namespace {
38 38
39 // Passes down the calls to |cert_generator_|. See usage in 39 // Passes down the calls to |store_|. See usage in CreatePeerConnection.
40 // |CreatePeerConnection|. 40 class DtlsIdentityStoreWrapper : public DtlsIdentityStoreInterface {
41 class RTCCertificateGeneratorWrapper
42 : public rtc::RTCCertificateGeneratorInterface {
43 public: 41 public:
44 RTCCertificateGeneratorWrapper( 42 DtlsIdentityStoreWrapper(
45 const rtc::scoped_refptr<RefCountedRTCCertificateGenerator>& cert_gen) 43 const rtc::scoped_refptr<RefCountedDtlsIdentityStore>& store)
46 : cert_generator_(cert_gen) { 44 : store_(store) {
47 RTC_DCHECK(cert_generator_); 45 RTC_DCHECK(store_);
48 } 46 }
49 47
50 void GenerateCertificateAsync( 48 void RequestIdentity(
51 const rtc::KeyParams& key_params, 49 const rtc::KeyParams& key_params,
52 const rtc::Optional<uint64_t>& expires_ms, 50 const rtc::Optional<uint64_t>& expires_ms,
53 const rtc::scoped_refptr<rtc::RTCCertificateGeneratorCallback>& callback) 51 const rtc::scoped_refptr<webrtc::DtlsIdentityRequestObserver>&
54 override { 52 observer) override {
55 cert_generator_->GenerateCertificateAsync(key_params, expires_ms, callback); 53 store_->RequestIdentity(key_params, expires_ms, observer);
56 } 54 }
57 55
58 private: 56 private:
59 rtc::scoped_refptr<RefCountedRTCCertificateGenerator> cert_generator_; 57 rtc::scoped_refptr<RefCountedDtlsIdentityStore> store_;
60 }; 58 };
61 59
62 } // anonymous namespace 60 } // anonymous namespace
63 61
64 rtc::scoped_refptr<PeerConnectionFactoryInterface> 62 rtc::scoped_refptr<PeerConnectionFactoryInterface>
65 CreatePeerConnectionFactory() { 63 CreatePeerConnectionFactory() {
66 rtc::scoped_refptr<PeerConnectionFactory> pc_factory( 64 rtc::scoped_refptr<PeerConnectionFactory> pc_factory(
67 new rtc::RefCountedObject<PeerConnectionFactory>()); 65 new rtc::RefCountedObject<PeerConnectionFactory>());
68 66
69 RTC_CHECK(rtc::Thread::Current() == pc_factory->signaling_thread()); 67 RTC_CHECK(rtc::Thread::Current() == pc_factory->signaling_thread());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 // TODO: Currently there is no way creating an external adm in 134 // TODO: Currently there is no way creating an external adm in
137 // libjingle source tree. So we can 't currently assert if this is NULL. 135 // libjingle source tree. So we can 't currently assert if this is NULL.
138 // ASSERT(default_adm != NULL); 136 // ASSERT(default_adm != NULL);
139 } 137 }
140 138
141 PeerConnectionFactory::~PeerConnectionFactory() { 139 PeerConnectionFactory::~PeerConnectionFactory() {
142 RTC_DCHECK(signaling_thread_->IsCurrent()); 140 RTC_DCHECK(signaling_thread_->IsCurrent());
143 channel_manager_.reset(nullptr); 141 channel_manager_.reset(nullptr);
144 142
145 // Make sure |worker_thread_| and |signaling_thread_| outlive 143 // Make sure |worker_thread_| and |signaling_thread_| outlive
146 // |cert_generator_|, |default_socket_factory_| and 144 // |dtls_identity_store_|, |default_socket_factory_| and
147 // |default_network_manager_|. 145 // |default_network_manager_|.
148 cert_generator_ = nullptr; 146 dtls_identity_store_ = nullptr;
149 default_socket_factory_ = nullptr; 147 default_socket_factory_ = nullptr;
150 default_network_manager_ = nullptr; 148 default_network_manager_ = nullptr;
151 149
152 if (owns_ptrs_) { 150 if (owns_ptrs_) {
153 if (wraps_current_thread_) 151 if (wraps_current_thread_)
154 rtc::ThreadManager::Instance()->UnwrapCurrentThread(); 152 rtc::ThreadManager::Instance()->UnwrapCurrentThread();
155 delete worker_thread_; 153 delete worker_thread_;
156 delete network_thread_; 154 delete network_thread_;
157 } 155 }
158 } 156 }
(...skipping 20 matching lines...) Expand all
179 &PeerConnectionFactory::CreateMediaEngine_w, this)); 177 &PeerConnectionFactory::CreateMediaEngine_w, this));
180 178
181 channel_manager_.reset(new cricket::ChannelManager( 179 channel_manager_.reset(new cricket::ChannelManager(
182 media_engine, worker_thread_, network_thread_)); 180 media_engine, worker_thread_, network_thread_));
183 181
184 channel_manager_->SetVideoRtxEnabled(true); 182 channel_manager_->SetVideoRtxEnabled(true);
185 if (!channel_manager_->Init()) { 183 if (!channel_manager_->Init()) {
186 return false; 184 return false;
187 } 185 }
188 186
189 cert_generator_ = 187 dtls_identity_store_ =
190 new RefCountedRTCCertificateGenerator(signaling_thread_, network_thread_); 188 new RefCountedDtlsIdentityStore(signaling_thread_, network_thread_);
191 189
192 return true; 190 return true;
193 } 191 }
194 192
195 rtc::scoped_refptr<AudioSourceInterface> 193 rtc::scoped_refptr<AudioSourceInterface>
196 PeerConnectionFactory::CreateAudioSource( 194 PeerConnectionFactory::CreateAudioSource(
197 const MediaConstraintsInterface* constraints) { 195 const MediaConstraintsInterface* constraints) {
198 RTC_DCHECK(signaling_thread_->IsCurrent()); 196 RTC_DCHECK(signaling_thread_->IsCurrent());
199 rtc::scoped_refptr<LocalAudioSource> source( 197 rtc::scoped_refptr<LocalAudioSource> source(
200 LocalAudioSource::Create(options_, constraints)); 198 LocalAudioSource::Create(options_, constraints));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 void PeerConnectionFactory::StopRtcEventLog() { 248 void PeerConnectionFactory::StopRtcEventLog() {
251 RTC_DCHECK(signaling_thread_->IsCurrent()); 249 RTC_DCHECK(signaling_thread_->IsCurrent());
252 channel_manager_->StopRtcEventLog(); 250 channel_manager_->StopRtcEventLog();
253 } 251 }
254 252
255 rtc::scoped_refptr<PeerConnectionInterface> 253 rtc::scoped_refptr<PeerConnectionInterface>
256 PeerConnectionFactory::CreatePeerConnection( 254 PeerConnectionFactory::CreatePeerConnection(
257 const PeerConnectionInterface::RTCConfiguration& configuration_in, 255 const PeerConnectionInterface::RTCConfiguration& configuration_in,
258 const MediaConstraintsInterface* constraints, 256 const MediaConstraintsInterface* constraints,
259 std::unique_ptr<cricket::PortAllocator> allocator, 257 std::unique_ptr<cricket::PortAllocator> allocator,
260 std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator, 258 std::unique_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
261 PeerConnectionObserver* observer) { 259 PeerConnectionObserver* observer) {
262 RTC_DCHECK(signaling_thread_->IsCurrent()); 260 RTC_DCHECK(signaling_thread_->IsCurrent());
263 261
264 // We merge constraints and configuration into a single configuration. 262 // We merge constraints and configuration into a single configuration.
265 PeerConnectionInterface::RTCConfiguration configuration = configuration_in; 263 PeerConnectionInterface::RTCConfiguration configuration = configuration_in;
266 CopyConstraintsIntoRtcConfiguration(constraints, &configuration); 264 CopyConstraintsIntoRtcConfiguration(constraints, &configuration);
267 265
268 return CreatePeerConnection(configuration, std::move(allocator), 266 return CreatePeerConnection(configuration, std::move(allocator),
269 std::move(cert_generator), observer); 267 std::move(dtls_identity_store), observer);
270 } 268 }
271 269
272 rtc::scoped_refptr<PeerConnectionInterface> 270 rtc::scoped_refptr<PeerConnectionInterface>
273 PeerConnectionFactory::CreatePeerConnection( 271 PeerConnectionFactory::CreatePeerConnection(
274 const PeerConnectionInterface::RTCConfiguration& configuration, 272 const PeerConnectionInterface::RTCConfiguration& configuration,
275 std::unique_ptr<cricket::PortAllocator> allocator, 273 std::unique_ptr<cricket::PortAllocator> allocator,
276 std::unique_ptr<rtc::RTCCertificateGeneratorInterface> cert_generator, 274 std::unique_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
277 PeerConnectionObserver* observer) { 275 PeerConnectionObserver* observer) {
278 RTC_DCHECK(signaling_thread_->IsCurrent()); 276 RTC_DCHECK(signaling_thread_->IsCurrent());
279 277
280 if (!cert_generator.get()) { 278 if (!dtls_identity_store.get()) {
281 // Because |pc|->Initialize takes ownership of the generator we need a new 279 // Because |pc|->Initialize takes ownership of the store we need a new
282 // wrapper object that can be deleted without deleting the underlying 280 // wrapper object that can be deleted without deleting the underlying
283 // |cert_generator_|, protecting it from being deleted multiple times. 281 // |dtls_identity_store_|, protecting it from being deleted multiple times.
284 cert_generator.reset( 282 dtls_identity_store.reset(
285 new RTCCertificateGeneratorWrapper(cert_generator_)); 283 new DtlsIdentityStoreWrapper(dtls_identity_store_));
286 } 284 }
287 285
288 if (!allocator) { 286 if (!allocator) {
289 allocator.reset(new cricket::BasicPortAllocator( 287 allocator.reset(new cricket::BasicPortAllocator(
290 default_network_manager_.get(), default_socket_factory_.get())); 288 default_network_manager_.get(), default_socket_factory_.get()));
291 } 289 }
292 network_thread_->Invoke<void>( 290 network_thread_->Invoke<void>(
293 rtc::Bind(&cricket::PortAllocator::SetNetworkIgnoreMask, allocator.get(), 291 rtc::Bind(&cricket::PortAllocator::SetNetworkIgnoreMask, allocator.get(),
294 options_.network_ignore_mask)); 292 options_.network_ignore_mask));
295 293
296 rtc::scoped_refptr<PeerConnection> pc( 294 rtc::scoped_refptr<PeerConnection> pc(
297 new rtc::RefCountedObject<PeerConnection>(this)); 295 new rtc::RefCountedObject<PeerConnection>(this));
298 296
299 if (!pc->Initialize(configuration, std::move(allocator), 297 if (!pc->Initialize(configuration, std::move(allocator),
300 std::move(cert_generator), observer)) { 298 std::move(dtls_identity_store), observer)) {
301 return nullptr; 299 return nullptr;
302 } 300 }
303 return PeerConnectionProxy::Create(signaling_thread(), pc); 301 return PeerConnectionProxy::Create(signaling_thread(), pc);
304 } 302 }
305 303
306 rtc::scoped_refptr<MediaStreamInterface> 304 rtc::scoped_refptr<MediaStreamInterface>
307 PeerConnectionFactory::CreateLocalMediaStream(const std::string& label) { 305 PeerConnectionFactory::CreateLocalMediaStream(const std::string& label) {
308 RTC_DCHECK(signaling_thread_->IsCurrent()); 306 RTC_DCHECK(signaling_thread_->IsCurrent());
309 return MediaStreamProxy::Create(signaling_thread_, 307 return MediaStreamProxy::Create(signaling_thread_,
310 MediaStream::Create(label)); 308 MediaStream::Create(label));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 } 348 }
351 349
352 cricket::MediaEngineInterface* PeerConnectionFactory::CreateMediaEngine_w() { 350 cricket::MediaEngineInterface* PeerConnectionFactory::CreateMediaEngine_w() {
353 ASSERT(worker_thread_ == rtc::Thread::Current()); 351 ASSERT(worker_thread_ == rtc::Thread::Current());
354 return cricket::WebRtcMediaEngineFactory::Create( 352 return cricket::WebRtcMediaEngineFactory::Create(
355 default_adm_.get(), video_encoder_factory_.get(), 353 default_adm_.get(), video_encoder_factory_.get(),
356 video_decoder_factory_.get()); 354 video_decoder_factory_.get());
357 } 355 }
358 356
359 } // namespace webrtc 357 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/api/peerconnectionfactory.h ('k') | webrtc/api/peerconnectionfactoryproxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698