OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/proxy/multi_threaded_proxy_resolver.h" | 5 #include "net/proxy/multi_threaded_proxy_resolver.h" |
6 | 6 |
7 #include <deque> | 7 #include <deque> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 void Destroy(); | 58 void Destroy(); |
59 | 59 |
60 // Returns the outstanding job, or NULL. | 60 // Returns the outstanding job, or NULL. |
61 Job* outstanding_job() const { return outstanding_job_.get(); } | 61 Job* outstanding_job() const { return outstanding_job_.get(); } |
62 | 62 |
63 ProxyResolver* resolver() { return resolver_.get(); } | 63 ProxyResolver* resolver() { return resolver_.get(); } |
64 | 64 |
65 int thread_number() const { return thread_number_; } | 65 int thread_number() const { return thread_number_; } |
66 | 66 |
67 void set_resolver(scoped_ptr<ProxyResolver> resolver) { | 67 void set_resolver(scoped_ptr<ProxyResolver> resolver) { |
68 resolver_ = resolver.Pass(); | 68 resolver_ = std::move(resolver); |
69 } | 69 } |
70 | 70 |
71 void set_coordinator(Coordinator* coordinator) { | 71 void set_coordinator(Coordinator* coordinator) { |
72 DCHECK(coordinator); | 72 DCHECK(coordinator); |
73 DCHECK(coordinator_); | 73 DCHECK(coordinator_); |
74 coordinator_ = coordinator; | 74 coordinator_ = coordinator; |
75 } | 75 } |
76 | 76 |
77 private: | 77 private: |
78 friend class base::RefCountedThreadSafe<Executor>; | 78 friend class base::RefCountedThreadSafe<Executor>; |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 | 255 |
256 protected: | 256 protected: |
257 ~CreateResolverJob() override {} | 257 ~CreateResolverJob() override {} |
258 | 258 |
259 private: | 259 private: |
260 // Runs the completion callback on the origin thread. | 260 // Runs the completion callback on the origin thread. |
261 void RequestComplete(int result_code) { | 261 void RequestComplete(int result_code) { |
262 // The task may have been cancelled after it was started. | 262 // The task may have been cancelled after it was started. |
263 if (!was_cancelled()) { | 263 if (!was_cancelled()) { |
264 DCHECK(executor()); | 264 DCHECK(executor()); |
265 executor()->set_resolver(resolver_.Pass()); | 265 executor()->set_resolver(std::move(resolver_)); |
266 } | 266 } |
267 OnJobCompleted(); | 267 OnJobCompleted(); |
268 } | 268 } |
269 | 269 |
270 const scoped_refptr<ProxyResolverScriptData> script_data_; | 270 const scoped_refptr<ProxyResolverScriptData> script_data_; |
271 ProxyResolverFactory* factory_; | 271 ProxyResolverFactory* factory_; |
272 scoped_ptr<ProxyResolver> resolver_; | 272 scoped_ptr<ProxyResolver> resolver_; |
273 }; | 273 }; |
274 | 274 |
275 // MultiThreadedProxyResolver::GetProxyForURLJob ------------------------------ | 275 // MultiThreadedProxyResolver::GetProxyForURLJob ------------------------------ |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 DCHECK(!outstanding_job_.get()); | 416 DCHECK(!outstanding_job_.get()); |
417 } | 417 } |
418 | 418 |
419 // MultiThreadedProxyResolver -------------------------------------------------- | 419 // MultiThreadedProxyResolver -------------------------------------------------- |
420 | 420 |
421 MultiThreadedProxyResolver::MultiThreadedProxyResolver( | 421 MultiThreadedProxyResolver::MultiThreadedProxyResolver( |
422 scoped_ptr<ProxyResolverFactory> resolver_factory, | 422 scoped_ptr<ProxyResolverFactory> resolver_factory, |
423 size_t max_num_threads, | 423 size_t max_num_threads, |
424 const scoped_refptr<ProxyResolverScriptData>& script_data, | 424 const scoped_refptr<ProxyResolverScriptData>& script_data, |
425 scoped_refptr<Executor> executor) | 425 scoped_refptr<Executor> executor) |
426 : resolver_factory_(resolver_factory.Pass()), | 426 : resolver_factory_(std::move(resolver_factory)), |
427 max_num_threads_(max_num_threads), | 427 max_num_threads_(max_num_threads), |
428 script_data_(script_data) { | 428 script_data_(script_data) { |
429 DCHECK(script_data_); | 429 DCHECK(script_data_); |
430 executor->set_coordinator(this); | 430 executor->set_coordinator(this); |
431 executors_.push_back(executor); | 431 executors_.push_back(executor); |
432 } | 432 } |
433 | 433 |
434 MultiThreadedProxyResolver::~MultiThreadedProxyResolver() { | 434 MultiThreadedProxyResolver::~MultiThreadedProxyResolver() { |
435 DCHECK(CalledOnValidThread()); | 435 DCHECK(CalledOnValidThread()); |
436 // We will cancel all outstanding requests. | 436 // We will cancel all outstanding requests. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 public Executor::Coordinator { | 543 public Executor::Coordinator { |
544 public: | 544 public: |
545 Job(MultiThreadedProxyResolverFactory* factory, | 545 Job(MultiThreadedProxyResolverFactory* factory, |
546 const scoped_refptr<ProxyResolverScriptData>& script_data, | 546 const scoped_refptr<ProxyResolverScriptData>& script_data, |
547 scoped_ptr<ProxyResolver>* resolver, | 547 scoped_ptr<ProxyResolver>* resolver, |
548 scoped_ptr<ProxyResolverFactory> resolver_factory, | 548 scoped_ptr<ProxyResolverFactory> resolver_factory, |
549 size_t max_num_threads, | 549 size_t max_num_threads, |
550 const CompletionCallback& callback) | 550 const CompletionCallback& callback) |
551 : factory_(factory), | 551 : factory_(factory), |
552 resolver_out_(resolver), | 552 resolver_out_(resolver), |
553 resolver_factory_(resolver_factory.Pass()), | 553 resolver_factory_(std::move(resolver_factory)), |
554 max_num_threads_(max_num_threads), | 554 max_num_threads_(max_num_threads), |
555 script_data_(script_data), | 555 script_data_(script_data), |
556 executor_(new Executor(this, 0)), | 556 executor_(new Executor(this, 0)), |
557 callback_(callback) { | 557 callback_(callback) { |
558 executor_->StartJob( | 558 executor_->StartJob( |
559 new CreateResolverJob(script_data_, resolver_factory_.get())); | 559 new CreateResolverJob(script_data_, resolver_factory_.get())); |
560 } | 560 } |
561 | 561 |
562 ~Job() override { | 562 ~Job() override { |
563 if (factory_) { | 563 if (factory_) { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 | 613 |
614 int MultiThreadedProxyResolverFactory::CreateProxyResolver( | 614 int MultiThreadedProxyResolverFactory::CreateProxyResolver( |
615 const scoped_refptr<ProxyResolverScriptData>& pac_script, | 615 const scoped_refptr<ProxyResolverScriptData>& pac_script, |
616 scoped_ptr<ProxyResolver>* resolver, | 616 scoped_ptr<ProxyResolver>* resolver, |
617 const CompletionCallback& callback, | 617 const CompletionCallback& callback, |
618 scoped_ptr<Request>* request) { | 618 scoped_ptr<Request>* request) { |
619 scoped_ptr<Job> job(new Job(this, pac_script, resolver, | 619 scoped_ptr<Job> job(new Job(this, pac_script, resolver, |
620 CreateProxyResolverFactory(), max_num_threads_, | 620 CreateProxyResolverFactory(), max_num_threads_, |
621 callback)); | 621 callback)); |
622 jobs_.insert(job.get()); | 622 jobs_.insert(job.get()); |
623 *request = job.Pass(); | 623 *request = std::move(job); |
624 return ERR_IO_PENDING; | 624 return ERR_IO_PENDING; |
625 } | 625 } |
626 | 626 |
627 void MultiThreadedProxyResolverFactory::RemoveJob( | 627 void MultiThreadedProxyResolverFactory::RemoveJob( |
628 MultiThreadedProxyResolverFactory::Job* job) { | 628 MultiThreadedProxyResolverFactory::Job* job) { |
629 size_t erased = jobs_.erase(job); | 629 size_t erased = jobs_.erase(job); |
630 DCHECK_EQ(1u, erased); | 630 DCHECK_EQ(1u, erased); |
631 } | 631 } |
632 | 632 |
633 } // namespace net | 633 } // namespace net |
OLD | NEW |