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 |