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

Side by Side Diff: net/base/host_resolver_impl.cc

Issue 6314010: Even more reordering the methods in headers and implementation in net/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « net/base/host_resolver_impl.h ('k') | net/base/host_resolver_proc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/base/host_resolver_impl.h" 5 #include "net/base/host_resolver_impl.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <Winsock2.h> 8 #include <Winsock2.h>
9 #elif defined(OS_POSIX) 9 #elif defined(OS_POSIX)
10 #include <netdb.h> 10 #include <netdb.h>
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 if (cur_completing_job_) 937 if (cur_completing_job_)
938 cur_completing_job_->Cancel(); 938 cur_completing_job_->Cancel();
939 939
940 NetworkChangeNotifier::RemoveObserver(this); 940 NetworkChangeNotifier::RemoveObserver(this);
941 941
942 // Delete the job pools. 942 // Delete the job pools.
943 for (size_t i = 0u; i < arraysize(job_pools_); ++i) 943 for (size_t i = 0u; i < arraysize(job_pools_); ++i)
944 delete job_pools_[i]; 944 delete job_pools_[i];
945 } 945 }
946 946
947 void HostResolverImpl::ProbeIPv6Support() {
948 DCHECK(CalledOnValidThread());
949 DCHECK(!ipv6_probe_monitoring_);
950 ipv6_probe_monitoring_ = true;
951 OnIPAddressChanged(); // Give initial setup call.
952 }
953
954 void HostResolverImpl::SetPoolConstraints(JobPoolIndex pool_index,
955 size_t max_outstanding_jobs,
956 size_t max_pending_requests) {
957 DCHECK(CalledOnValidThread());
958 CHECK_GE(pool_index, 0);
959 CHECK_LT(pool_index, POOL_COUNT);
960 CHECK(jobs_.empty()) << "Can only set constraints during setup";
961 JobPool* pool = job_pools_[pool_index];
962 pool->SetConstraints(max_outstanding_jobs, max_pending_requests);
963 }
964
947 int HostResolverImpl::Resolve(const RequestInfo& info, 965 int HostResolverImpl::Resolve(const RequestInfo& info,
948 AddressList* addresses, 966 AddressList* addresses,
949 CompletionCallback* callback, 967 CompletionCallback* callback,
950 RequestHandle* out_req, 968 RequestHandle* out_req,
951 const BoundNetLog& source_net_log) { 969 const BoundNetLog& source_net_log) {
952 DCHECK(CalledOnValidThread()); 970 DCHECK(CalledOnValidThread());
953 971
954 if (shutdown_) 972 if (shutdown_)
955 return ERR_UNEXPECTED; 973 return ERR_UNEXPECTED;
956 974
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1118 DCHECK(CalledOnValidThread()); 1136 DCHECK(CalledOnValidThread());
1119 ipv6_probe_monitoring_ = false; 1137 ipv6_probe_monitoring_ = false;
1120 DiscardIPv6ProbeJob(); 1138 DiscardIPv6ProbeJob();
1121 default_address_family_ = address_family; 1139 default_address_family_ = address_family;
1122 } 1140 }
1123 1141
1124 AddressFamily HostResolverImpl::GetDefaultAddressFamily() const { 1142 AddressFamily HostResolverImpl::GetDefaultAddressFamily() const {
1125 return default_address_family_; 1143 return default_address_family_;
1126 } 1144 }
1127 1145
1128 void HostResolverImpl::ProbeIPv6Support() {
1129 DCHECK(CalledOnValidThread());
1130 DCHECK(!ipv6_probe_monitoring_);
1131 ipv6_probe_monitoring_ = true;
1132 OnIPAddressChanged(); // Give initial setup call.
1133 }
1134
1135 HostResolverImpl* HostResolverImpl::GetAsHostResolverImpl() { 1146 HostResolverImpl* HostResolverImpl::GetAsHostResolverImpl() {
1136 return this; 1147 return this;
1137 } 1148 }
1138 1149
1139 void HostResolverImpl::Shutdown() { 1150 void HostResolverImpl::Shutdown() {
1140 DCHECK(CalledOnValidThread()); 1151 DCHECK(CalledOnValidThread());
1141 1152
1142 // Cancel the outstanding jobs. 1153 // Cancel the outstanding jobs.
1143 CancelAllJobs(); 1154 CancelAllJobs();
1144 DiscardIPv6ProbeJob(); 1155 DiscardIPv6ProbeJob();
1145 1156
1146 shutdown_ = true; 1157 shutdown_ = true;
1147 } 1158 }
1148 1159
1149 void HostResolverImpl::SetPoolConstraints(JobPoolIndex pool_index,
1150 size_t max_outstanding_jobs,
1151 size_t max_pending_requests) {
1152 DCHECK(CalledOnValidThread());
1153 CHECK_GE(pool_index, 0);
1154 CHECK_LT(pool_index, POOL_COUNT);
1155 CHECK(jobs_.empty()) << "Can only set constraints during setup";
1156 JobPool* pool = job_pools_[pool_index];
1157 pool->SetConstraints(max_outstanding_jobs, max_pending_requests);
1158 }
1159
1160 void HostResolverImpl::AddOutstandingJob(Job* job) { 1160 void HostResolverImpl::AddOutstandingJob(Job* job) {
1161 scoped_refptr<Job>& found_job = jobs_[job->key()]; 1161 scoped_refptr<Job>& found_job = jobs_[job->key()];
1162 DCHECK(!found_job); 1162 DCHECK(!found_job);
1163 found_job = job; 1163 found_job = job;
1164 1164
1165 JobPool* pool = GetPoolForRequest(job->initial_request()); 1165 JobPool* pool = GetPoolForRequest(job->initial_request());
1166 pool->AdjustNumOutstandingJobs(1); 1166 pool->AdjustNumOutstandingJobs(1);
1167 } 1167 }
1168 1168
1169 HostResolverImpl::Job* HostResolverImpl::FindOutstandingJob(const Key& key) { 1169 HostResolverImpl::Job* HostResolverImpl::FindOutstandingJob(const Key& key) {
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 for (ObserversList::iterator it = observers_.begin(); 1298 for (ObserversList::iterator it = observers_.begin();
1299 it != observers_.end(); ++it) { 1299 it != observers_.end(); ++it) {
1300 (*it)->OnCancelResolution(request_id, info); 1300 (*it)->OnCancelResolution(request_id, info);
1301 } 1301 }
1302 } 1302 }
1303 1303
1304 request_net_log.EndEvent(NetLog::TYPE_HOST_RESOLVER_IMPL_REQUEST, NULL); 1304 request_net_log.EndEvent(NetLog::TYPE_HOST_RESOLVER_IMPL_REQUEST, NULL);
1305 source_net_log.EndEvent(NetLog::TYPE_HOST_RESOLVER_IMPL, NULL); 1305 source_net_log.EndEvent(NetLog::TYPE_HOST_RESOLVER_IMPL, NULL);
1306 } 1306 }
1307 1307
1308 void HostResolverImpl::OnIPAddressChanged() {
1309 if (cache_.get())
1310 cache_->clear();
1311 if (ipv6_probe_monitoring_) {
1312 DCHECK(!shutdown_);
1313 if (shutdown_)
1314 return;
1315 DiscardIPv6ProbeJob();
1316 ipv6_probe_job_ = new IPv6ProbeJob(this);
1317 ipv6_probe_job_->Start();
1318 }
1319 #if defined(OS_LINUX)
1320 if (HaveOnlyLoopbackAddresses()) {
1321 additional_resolver_flags_ |= HOST_RESOLVER_LOOPBACK_ONLY;
1322 } else {
1323 additional_resolver_flags_ &= ~HOST_RESOLVER_LOOPBACK_ONLY;
1324 }
1325 #endif
1326 AbortAllInProgressJobs();
1327 // |this| may be deleted inside AbortAllInProgressJobs().
1328 }
1329
1330 void HostResolverImpl::DiscardIPv6ProbeJob() { 1308 void HostResolverImpl::DiscardIPv6ProbeJob() {
1331 if (ipv6_probe_job_.get()) { 1309 if (ipv6_probe_job_.get()) {
1332 ipv6_probe_job_->Cancel(); 1310 ipv6_probe_job_->Cancel();
1333 ipv6_probe_job_ = NULL; 1311 ipv6_probe_job_ = NULL;
1334 } 1312 }
1335 } 1313 }
1336 1314
1337 void HostResolverImpl::IPv6ProbeSetDefaultAddressFamily( 1315 void HostResolverImpl::IPv6ProbeSetDefaultAddressFamily(
1338 AddressFamily address_family) { 1316 AddressFamily address_family) {
1339 DCHECK(address_family == ADDRESS_FAMILY_UNSPECIFIED || 1317 DCHECK(address_family == ADDRESS_FAMILY_UNSPECIFIED ||
1340 address_family == ADDRESS_FAMILY_IPV4); 1318 address_family == ADDRESS_FAMILY_IPV4);
1341 if (default_address_family_ != address_family) { 1319 if (default_address_family_ != address_family) {
1342 VLOG(1) << "IPv6Probe forced AddressFamily setting to " 1320 VLOG(1) << "IPv6Probe forced AddressFamily setting to "
1343 << ((address_family == ADDRESS_FAMILY_UNSPECIFIED) ? 1321 << ((address_family == ADDRESS_FAMILY_UNSPECIFIED) ?
1344 "ADDRESS_FAMILY_UNSPECIFIED" : "ADDRESS_FAMILY_IPV4"); 1322 "ADDRESS_FAMILY_UNSPECIFIED" : "ADDRESS_FAMILY_IPV4");
1345 } 1323 }
1346 default_address_family_ = address_family; 1324 default_address_family_ = address_family;
1347 // Drop reference since the job has called us back. 1325 // Drop reference since the job has called us back.
1348 DiscardIPv6ProbeJob(); 1326 DiscardIPv6ProbeJob();
1349 } 1327 }
1350 1328
1351 // static
1352 HostResolverImpl::JobPoolIndex HostResolverImpl::GetJobPoolIndexForRequest(
1353 const Request* req) {
1354 return POOL_NORMAL;
1355 }
1356
1357 bool HostResolverImpl::CanCreateJobForPool(const JobPool& pool) const { 1329 bool HostResolverImpl::CanCreateJobForPool(const JobPool& pool) const {
1358 DCHECK_LE(jobs_.size(), max_jobs_); 1330 DCHECK_LE(jobs_.size(), max_jobs_);
1359 1331
1360 // We can't create another job if it would exceed the global total. 1332 // We can't create another job if it would exceed the global total.
1361 if (jobs_.size() + 1 > max_jobs_) 1333 if (jobs_.size() + 1 > max_jobs_)
1362 return false; 1334 return false;
1363 1335
1364 // Check whether the pool's constraints are met. 1336 // Check whether the pool's constraints are met.
1365 return pool.CanCreateJob(); 1337 return pool.CanCreateJob();
1366 } 1338 }
1367 1339
1340 // static
1341 HostResolverImpl::JobPoolIndex HostResolverImpl::GetJobPoolIndexForRequest(
1342 const Request* req) {
1343 return POOL_NORMAL;
1344 }
1345
1368 void HostResolverImpl::ProcessQueuedRequests() { 1346 void HostResolverImpl::ProcessQueuedRequests() {
1369 // Find the highest priority request that can be scheduled. 1347 // Find the highest priority request that can be scheduled.
1370 Request* top_req = NULL; 1348 Request* top_req = NULL;
1371 for (size_t i = 0; i < arraysize(job_pools_); ++i) { 1349 for (size_t i = 0; i < arraysize(job_pools_); ++i) {
1372 JobPool* pool = job_pools_[i]; 1350 JobPool* pool = job_pools_[i];
1373 if (pool->HasPendingRequests() && CanCreateJobForPool(*pool)) { 1351 if (pool->HasPendingRequests() && CanCreateJobForPool(*pool)) {
1374 top_req = pool->RemoveTopPendingRequest(); 1352 top_req = pool->RemoveTopPendingRequest();
1375 break; 1353 break;
1376 } 1354 }
1377 } 1355 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1451 for (size_t i = 0; i < arraysize(job_pools_); ++i) 1429 for (size_t i = 0; i < arraysize(job_pools_); ++i)
1452 job_pools_[i]->ResetNumOutstandingJobs(); 1430 job_pools_[i]->ResetNumOutstandingJobs();
1453 JobMap jobs; 1431 JobMap jobs;
1454 jobs.swap(jobs_); 1432 jobs.swap(jobs_);
1455 for (JobMap::iterator it = jobs.begin(); it != jobs.end(); ++it) { 1433 for (JobMap::iterator it = jobs.begin(); it != jobs.end(); ++it) {
1456 AbortJob(it->second); 1434 AbortJob(it->second);
1457 it->second->Cancel(); 1435 it->second->Cancel();
1458 } 1436 }
1459 } 1437 }
1460 1438
1439 void HostResolverImpl::OnIPAddressChanged() {
1440 if (cache_.get())
1441 cache_->clear();
1442 if (ipv6_probe_monitoring_) {
1443 DCHECK(!shutdown_);
1444 if (shutdown_)
1445 return;
1446 DiscardIPv6ProbeJob();
1447 ipv6_probe_job_ = new IPv6ProbeJob(this);
1448 ipv6_probe_job_->Start();
1449 }
1450 #if defined(OS_LINUX)
1451 if (HaveOnlyLoopbackAddresses()) {
1452 additional_resolver_flags_ |= HOST_RESOLVER_LOOPBACK_ONLY;
1453 } else {
1454 additional_resolver_flags_ &= ~HOST_RESOLVER_LOOPBACK_ONLY;
1455 }
1456 #endif
1457 AbortAllInProgressJobs();
1458 // |this| may be deleted inside AbortAllInProgressJobs().
1459 }
1460
1461 } // namespace net 1461 } // namespace net
OLDNEW
« no previous file with comments | « net/base/host_resolver_impl.h ('k') | net/base/host_resolver_proc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698