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

Side by Side Diff: net/dns/mojo_host_resolver_impl.cc

Issue 2116983002: Change HostResolver::Resolve() to take an std::unique_ptr<Request>* rather than a RequestHandle* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: http_stream_factory_impl_job_controller_unittest RequestHandle* to unique_ptr Created 4 years, 4 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
OLDNEW
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> 7 #include <utility>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
(...skipping 23 matching lines...) Expand all
34 void OnResolveDone(int result); 34 void OnResolveDone(int result);
35 35
36 // Mojo error handler. 36 // Mojo error handler.
37 void OnConnectionError(); 37 void OnConnectionError();
38 38
39 MojoHostResolverImpl* resolver_service_; 39 MojoHostResolverImpl* resolver_service_;
40 net::HostResolver* resolver_; 40 net::HostResolver* resolver_;
41 net::HostResolver::RequestInfo request_info_; 41 net::HostResolver::RequestInfo request_info_;
42 const BoundNetLog net_log_; 42 const BoundNetLog net_log_;
43 interfaces::HostResolverRequestClientPtr client_; 43 interfaces::HostResolverRequestClientPtr client_;
44 net::HostResolver::RequestHandle handle_; 44 std::unique_ptr<net::HostResolver::Request> request_;
45 AddressList result_; 45 AddressList result_;
46 base::ThreadChecker thread_checker_; 46 base::ThreadChecker thread_checker_;
47 }; 47 };
48 48
49 MojoHostResolverImpl::MojoHostResolverImpl(net::HostResolver* resolver, 49 MojoHostResolverImpl::MojoHostResolverImpl(net::HostResolver* resolver,
50 const BoundNetLog& net_log) 50 const BoundNetLog& net_log)
51 : resolver_(resolver), net_log_(net_log) { 51 : resolver_(resolver), net_log_(net_log) {
52 } 52 }
53 53
54 MojoHostResolverImpl::~MojoHostResolverImpl() { 54 MojoHostResolverImpl::~MojoHostResolverImpl() {
(...skipping 29 matching lines...) Expand all
84 MojoHostResolverImpl::Job::Job( 84 MojoHostResolverImpl::Job::Job(
85 MojoHostResolverImpl* resolver_service, 85 MojoHostResolverImpl* resolver_service,
86 net::HostResolver* resolver, 86 net::HostResolver* resolver,
87 const net::HostResolver::RequestInfo& request_info, 87 const net::HostResolver::RequestInfo& request_info,
88 const BoundNetLog& net_log, 88 const BoundNetLog& net_log,
89 interfaces::HostResolverRequestClientPtr client) 89 interfaces::HostResolverRequestClientPtr client)
90 : resolver_service_(resolver_service), 90 : resolver_service_(resolver_service),
91 resolver_(resolver), 91 resolver_(resolver),
92 request_info_(request_info), 92 request_info_(request_info),
93 net_log_(net_log), 93 net_log_(net_log),
94 client_(std::move(client)), 94 client_(std::move(client)) {
95 handle_(nullptr) {
96 client_.set_connection_error_handler(base::Bind( 95 client_.set_connection_error_handler(base::Bind(
97 &MojoHostResolverImpl::Job::OnConnectionError, base::Unretained(this))); 96 &MojoHostResolverImpl::Job::OnConnectionError, base::Unretained(this)));
98 } 97 }
99 98
100 void MojoHostResolverImpl::Job::Start() { 99 void MojoHostResolverImpl::Job::Start() {
101 DVLOG(1) << "Resolve " << request_info_.host_port_pair().ToString(); 100 DVLOG(1) << "Resolve " << request_info_.host_port_pair().ToString();
102 int result = 101 int result =
103 resolver_->Resolve(request_info_, DEFAULT_PRIORITY, &result_, 102 resolver_->Resolve(request_info_, DEFAULT_PRIORITY, &result_,
104 base::Bind(&MojoHostResolverImpl::Job::OnResolveDone, 103 base::Bind(&MojoHostResolverImpl::Job::OnResolveDone,
105 base::Unretained(this)), 104 base::Unretained(this)),
106 &handle_, net_log_); 105 &request_, net_log_);
107 106
108 if (result != ERR_IO_PENDING) 107 if (result != ERR_IO_PENDING)
109 OnResolveDone(result); 108 OnResolveDone(result);
110 } 109 }
111 110
112 MojoHostResolverImpl::Job::~Job() { 111 MojoHostResolverImpl::Job::~Job() {
113 DCHECK(thread_checker_.CalledOnValidThread());
114 if (handle_)
115 resolver_->CancelRequest(handle_);
116 } 112 }
117 113
118 void MojoHostResolverImpl::Job::OnResolveDone(int result) { 114 void MojoHostResolverImpl::Job::OnResolveDone(int result) {
119 DCHECK(thread_checker_.CalledOnValidThread()); 115 DCHECK(thread_checker_.CalledOnValidThread());
120 handle_ = nullptr; 116 request_.reset();
121 DVLOG(1) << "Resolved " << request_info_.host_port_pair().ToString() 117 DVLOG(1) << "Resolved " << request_info_.host_port_pair().ToString()
122 << " with error " << result << " and " << result_.size() 118 << " with error " << result << " and " << result_.size()
123 << " results!"; 119 << " results!";
124 for (const auto& address : result_) { 120 for (const auto& address : result_) {
125 DVLOG(1) << address.ToString(); 121 DVLOG(1) << address.ToString();
126 } 122 }
127 if (result == OK) 123 if (result == OK)
128 client_->ReportResult(result, interfaces::AddressList::From(result_)); 124 client_->ReportResult(result, interfaces::AddressList::From(result_));
129 else 125 else
130 client_->ReportResult(result, nullptr); 126 client_->ReportResult(result, nullptr);
131 127
132 resolver_service_->DeleteJob(this); 128 resolver_service_->DeleteJob(this);
133 } 129 }
134 130
135 void MojoHostResolverImpl::Job::OnConnectionError() { 131 void MojoHostResolverImpl::Job::OnConnectionError() {
136 DCHECK(thread_checker_.CalledOnValidThread()); 132 DCHECK(thread_checker_.CalledOnValidThread());
137 // |resolver_service_| should always outlive us. 133 // |resolver_service_| should always outlive us.
138 DCHECK(resolver_service_); 134 DCHECK(resolver_service_);
139 DVLOG(1) << "Connection error on request for " 135 DVLOG(1) << "Connection error on request for "
140 << request_info_.host_port_pair().ToString(); 136 << request_info_.host_port_pair().ToString();
141 resolver_service_->DeleteJob(this); 137 resolver_service_->DeleteJob(this);
142 } 138 }
143 139
144 } // namespace net 140 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698