| 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 |