| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/dns/mojo_host_resolver_impl.h" | 5 #include "net/dns/mojo_host_resolver_impl.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 8 #include "net/base/address_list.h" | 10 #include "net/base/address_list.h" |
| 9 #include "net/base/net_errors.h" | 11 #include "net/base/net_errors.h" |
| 10 #include "net/dns/host_resolver.h" | 12 #include "net/dns/host_resolver.h" |
| 11 #include "net/dns/mojo_host_type_converters.h" | 13 #include "net/dns/mojo_host_type_converters.h" |
| 12 | 14 |
| 13 namespace net { | 15 namespace net { |
| 14 | 16 |
| 15 // Handles host resolution for a single request and sends a response when done. | 17 // Handles host resolution for a single request and sends a response when done. |
| 16 // Also detects connection errors for HostResolverRequestClient and cancels the | 18 // Also detects connection errors for HostResolverRequestClient and cancels the |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 DCHECK(thread_checker_.CalledOnValidThread()); | 54 DCHECK(thread_checker_.CalledOnValidThread()); |
| 53 STLDeleteElements(&pending_jobs_); | 55 STLDeleteElements(&pending_jobs_); |
| 54 } | 56 } |
| 55 | 57 |
| 56 void MojoHostResolverImpl::Resolve( | 58 void MojoHostResolverImpl::Resolve( |
| 57 interfaces::HostResolverRequestInfoPtr request_info, | 59 interfaces::HostResolverRequestInfoPtr request_info, |
| 58 interfaces::HostResolverRequestClientPtr client) { | 60 interfaces::HostResolverRequestClientPtr client) { |
| 59 DCHECK(thread_checker_.CalledOnValidThread()); | 61 DCHECK(thread_checker_.CalledOnValidThread()); |
| 60 Job* job = new Job(this, resolver_, | 62 Job* job = new Job(this, resolver_, |
| 61 request_info->To<net::HostResolver::RequestInfo>(), | 63 request_info->To<net::HostResolver::RequestInfo>(), |
| 62 net_log_, client.Pass()); | 64 net_log_, std::move(client)); |
| 63 pending_jobs_.insert(job); | 65 pending_jobs_.insert(job); |
| 64 job->Start(); | 66 job->Start(); |
| 65 } | 67 } |
| 66 | 68 |
| 67 void MojoHostResolverImpl::DeleteJob(Job* job) { | 69 void MojoHostResolverImpl::DeleteJob(Job* job) { |
| 68 DCHECK(thread_checker_.CalledOnValidThread()); | 70 DCHECK(thread_checker_.CalledOnValidThread()); |
| 69 size_t num_erased = pending_jobs_.erase(job); | 71 size_t num_erased = pending_jobs_.erase(job); |
| 70 DCHECK(num_erased); | 72 DCHECK(num_erased); |
| 71 delete job; | 73 delete job; |
| 72 } | 74 } |
| 73 | 75 |
| 74 MojoHostResolverImpl::Job::Job( | 76 MojoHostResolverImpl::Job::Job( |
| 75 MojoHostResolverImpl* resolver_service, | 77 MojoHostResolverImpl* resolver_service, |
| 76 net::HostResolver* resolver, | 78 net::HostResolver* resolver, |
| 77 const net::HostResolver::RequestInfo& request_info, | 79 const net::HostResolver::RequestInfo& request_info, |
| 78 const BoundNetLog& net_log, | 80 const BoundNetLog& net_log, |
| 79 interfaces::HostResolverRequestClientPtr client) | 81 interfaces::HostResolverRequestClientPtr client) |
| 80 : resolver_service_(resolver_service), | 82 : resolver_service_(resolver_service), |
| 81 resolver_(resolver), | 83 resolver_(resolver), |
| 82 request_info_(request_info), | 84 request_info_(request_info), |
| 83 net_log_(net_log), | 85 net_log_(net_log), |
| 84 client_(client.Pass()), | 86 client_(std::move(client)), |
| 85 handle_(nullptr) { | 87 handle_(nullptr) { |
| 86 client_.set_connection_error_handler(base::Bind( | 88 client_.set_connection_error_handler(base::Bind( |
| 87 &MojoHostResolverImpl::Job::OnConnectionError, base::Unretained(this))); | 89 &MojoHostResolverImpl::Job::OnConnectionError, base::Unretained(this))); |
| 88 } | 90 } |
| 89 | 91 |
| 90 void MojoHostResolverImpl::Job::Start() { | 92 void MojoHostResolverImpl::Job::Start() { |
| 91 DVLOG(1) << "Resolve " << request_info_.host_port_pair().ToString(); | 93 DVLOG(1) << "Resolve " << request_info_.host_port_pair().ToString(); |
| 92 int result = | 94 int result = |
| 93 resolver_->Resolve(request_info_, DEFAULT_PRIORITY, &result_, | 95 resolver_->Resolve(request_info_, DEFAULT_PRIORITY, &result_, |
| 94 base::Bind(&MojoHostResolverImpl::Job::OnResolveDone, | 96 base::Bind(&MojoHostResolverImpl::Job::OnResolveDone, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 125 void MojoHostResolverImpl::Job::OnConnectionError() { | 127 void MojoHostResolverImpl::Job::OnConnectionError() { |
| 126 DCHECK(thread_checker_.CalledOnValidThread()); | 128 DCHECK(thread_checker_.CalledOnValidThread()); |
| 127 // |resolver_service_| should always outlive us. | 129 // |resolver_service_| should always outlive us. |
| 128 DCHECK(resolver_service_); | 130 DCHECK(resolver_service_); |
| 129 DVLOG(1) << "Connection error on request for " | 131 DVLOG(1) << "Connection error on request for " |
| 130 << request_info_.host_port_pair().ToString(); | 132 << request_info_.host_port_pair().ToString(); |
| 131 resolver_service_->DeleteJob(this); | 133 resolver_service_->DeleteJob(this); |
| 132 } | 134 } |
| 133 | 135 |
| 134 } // namespace net | 136 } // namespace net |
| OLD | NEW |