| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <utility> | 5 #include <utility> |
| 6 | 6 |
| 7 #include "base/location.h" | 7 #include "base/location.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 if (it != services_.end()) | 257 if (it != services_.end()) |
| 258 it->second->set_has_srv(true); | 258 it->second->set_has_srv(true); |
| 259 } | 259 } |
| 260 | 260 |
| 261 void ServiceWatcherImpl::DeferUpdate(ServiceWatcher::UpdateType update_type, | 261 void ServiceWatcherImpl::DeferUpdate(ServiceWatcher::UpdateType update_type, |
| 262 const std::string& service_name) { | 262 const std::string& service_name) { |
| 263 ServiceListenersMap::iterator it = services_.find(service_name); | 263 ServiceListenersMap::iterator it = services_.find(service_name); |
| 264 if (it != services_.end() && !it->second->update_pending()) { | 264 if (it != services_.end() && !it->second->update_pending()) { |
| 265 it->second->set_update_pending(true); | 265 it->second->set_update_pending(true); |
| 266 base::ThreadTaskRunnerHandle::Get()->PostTask( | 266 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 267 FROM_HERE, base::Bind(&ServiceWatcherImpl::DeliverDeferredUpdate, | 267 FROM_HERE, base::BindOnce(&ServiceWatcherImpl::DeliverDeferredUpdate, |
| 268 AsWeakPtr(), update_type, service_name)); | 268 AsWeakPtr(), update_type, service_name)); |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 | 271 |
| 272 void ServiceWatcherImpl::DeliverDeferredUpdate( | 272 void ServiceWatcherImpl::DeliverDeferredUpdate( |
| 273 ServiceWatcher::UpdateType update_type, const std::string& service_name) { | 273 ServiceWatcher::UpdateType update_type, const std::string& service_name) { |
| 274 ServiceListenersMap::iterator it = services_.find(service_name); | 274 ServiceListenersMap::iterator it = services_.find(service_name); |
| 275 if (it != services_.end()) { | 275 if (it != services_.end()) { |
| 276 it->second->set_update_pending(false); | 276 it->second->set_update_pending(false); |
| 277 if (!callback_.is_null()) | 277 if (!callback_.is_null()) |
| 278 callback_.Run(update_type, service_name); | 278 callback_.Run(update_type, service_name); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 309 | 309 |
| 310 void ServiceWatcherImpl::OnNsecRecord(const std::string& name, | 310 void ServiceWatcherImpl::OnNsecRecord(const std::string& name, |
| 311 unsigned rrtype) { | 311 unsigned rrtype) { |
| 312 // Do nothing. It is an error for hosts to broadcast an NSEC record for PTR | 312 // Do nothing. It is an error for hosts to broadcast an NSEC record for PTR |
| 313 // on any name. | 313 // on any name. |
| 314 } | 314 } |
| 315 | 315 |
| 316 void ServiceWatcherImpl::ScheduleQuery(int timeout_seconds) { | 316 void ServiceWatcherImpl::ScheduleQuery(int timeout_seconds) { |
| 317 if (timeout_seconds <= kMaxRequeryTimeSeconds) { | 317 if (timeout_seconds <= kMaxRequeryTimeSeconds) { |
| 318 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 318 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 319 FROM_HERE, base::Bind(&ServiceWatcherImpl::SendQuery, AsWeakPtr(), | 319 FROM_HERE, |
| 320 timeout_seconds * 2 /*next_timeout_seconds*/, | 320 base::BindOnce(&ServiceWatcherImpl::SendQuery, AsWeakPtr(), |
| 321 false /*force_update*/), | 321 timeout_seconds * 2 /*next_timeout_seconds*/, |
| 322 false /*force_update*/), |
| 322 base::TimeDelta::FromSeconds(timeout_seconds)); | 323 base::TimeDelta::FromSeconds(timeout_seconds)); |
| 323 } | 324 } |
| 324 } | 325 } |
| 325 | 326 |
| 326 void ServiceWatcherImpl::SendQuery(int next_timeout_seconds, | 327 void ServiceWatcherImpl::SendQuery(int next_timeout_seconds, |
| 327 bool force_update) { | 328 bool force_update) { |
| 328 CreateTransaction(true /*network*/, false /*cache*/, force_update, | 329 CreateTransaction(true /*network*/, false /*cache*/, force_update, |
| 329 &transaction_network_); | 330 &transaction_network_); |
| 330 ScheduleQuery(next_timeout_seconds); | 331 ScheduleQuery(next_timeout_seconds); |
| 331 } | 332 } |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 } | 556 } |
| 556 | 557 |
| 557 void LocalDomainResolverImpl::SendResolvedAddresses() { | 558 void LocalDomainResolverImpl::SendResolvedAddresses() { |
| 558 transaction_a_.reset(); | 559 transaction_a_.reset(); |
| 559 transaction_aaaa_.reset(); | 560 transaction_aaaa_.reset(); |
| 560 timeout_callback_.Cancel(); | 561 timeout_callback_.Cancel(); |
| 561 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_); | 562 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_); |
| 562 } | 563 } |
| 563 | 564 |
| 564 } // namespace local_discovery | 565 } // namespace local_discovery |
| OLD | NEW |