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

Side by Side Diff: chrome/common/local_discovery/service_discovery_client_impl.cc

Issue 1534583002: Migrate Local Discovery from net::IPAddressNumber to net::IPAddress. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 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/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 428 }
429 429
430 void ServiceResolverImpl::ARecordTransactionResponse( 430 void ServiceResolverImpl::ARecordTransactionResponse(
431 net::MDnsTransaction::Result status, const net::RecordParsed* record) { 431 net::MDnsTransaction::Result status, const net::RecordParsed* record) {
432 a_transaction_.reset(); 432 a_transaction_.reset();
433 433
434 if (status == net::MDnsTransaction::RESULT_RECORD) { 434 if (status == net::MDnsTransaction::RESULT_RECORD) {
435 DCHECK(record); 435 DCHECK(record);
436 service_staging_.ip_address = RecordToIPAddress(record); 436 service_staging_.ip_address = RecordToIPAddress(record);
437 } else { 437 } else {
438 service_staging_.ip_address = net::IPAddressNumber(); 438 service_staging_.ip_address = net::IPAddress();
439 } 439 }
440 440
441 address_resolved_ = true; 441 address_resolved_ = true;
442 AlertCallbackIfReady(); 442 AlertCallbackIfReady();
443 } 443 }
444 444
445 void ServiceResolverImpl::AlertCallbackIfReady() { 445 void ServiceResolverImpl::AlertCallbackIfReady() {
446 if (metadata_resolved_ && address_resolved_) { 446 if (metadata_resolved_ && address_resolved_) {
447 txt_transaction_.reset(); 447 txt_transaction_.reset();
448 srv_transaction_.reset(); 448 srv_transaction_.reset();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 } 486 }
487 487
488 net::HostPortPair ServiceResolverImpl::RecordToAddress( 488 net::HostPortPair ServiceResolverImpl::RecordToAddress(
489 const net::RecordParsed* record) const { 489 const net::RecordParsed* record) const {
490 DCHECK(record->type() == net::dns_protocol::kTypeSRV); 490 DCHECK(record->type() == net::dns_protocol::kTypeSRV);
491 const net::SrvRecordRdata* srv_rdata = record->rdata<net::SrvRecordRdata>(); 491 const net::SrvRecordRdata* srv_rdata = record->rdata<net::SrvRecordRdata>();
492 DCHECK(srv_rdata); 492 DCHECK(srv_rdata);
493 return net::HostPortPair(srv_rdata->target(), srv_rdata->port()); 493 return net::HostPortPair(srv_rdata->target(), srv_rdata->port());
494 } 494 }
495 495
496 const net::IPAddressNumber& ServiceResolverImpl::RecordToIPAddress( 496 const net::IPAddress ServiceResolverImpl::RecordToIPAddress(
497 const net::RecordParsed* record) const { 497 const net::RecordParsed* record) const {
498 DCHECK(record->type() == net::dns_protocol::kTypeA); 498 DCHECK(record->type() == net::dns_protocol::kTypeA);
499 const net::ARecordRdata* a_rdata = record->rdata<net::ARecordRdata>(); 499 const net::ARecordRdata* a_rdata = record->rdata<net::ARecordRdata>();
500 DCHECK(a_rdata); 500 DCHECK(a_rdata);
501 return a_rdata->address(); 501 return net::IPAddress(&a_rdata->address().front(), a_rdata->address().size());
eroman 2015/12/21 20:47:33 Use a net::IPAddress(const IPAddressNumber&) const
martijnc 2016/01/27 22:50:52 Done.
502 } 502 }
503 503
504 LocalDomainResolverImpl::LocalDomainResolverImpl( 504 LocalDomainResolverImpl::LocalDomainResolverImpl(
505 const std::string& domain, 505 const std::string& domain,
506 net::AddressFamily address_family, 506 net::AddressFamily address_family,
507 const IPAddressCallback& callback, 507 const IPAddressCallback& callback,
508 net::MDnsClient* mdns_client) 508 net::MDnsClient* mdns_client)
509 : domain_(domain), address_family_(address_family), callback_(callback), 509 : domain_(domain), address_family_(address_family), callback_(callback),
510 transactions_finished_(0), mdns_client_(mdns_client) { 510 transactions_finished_(0), mdns_client_(mdns_client) {
511 } 511 }
(...skipping 26 matching lines...) Expand all
538 base::Unretained(this))); 538 base::Unretained(this)));
539 } 539 }
540 540
541 void LocalDomainResolverImpl::OnTransactionComplete( 541 void LocalDomainResolverImpl::OnTransactionComplete(
542 net::MDnsTransaction::Result result, const net::RecordParsed* record) { 542 net::MDnsTransaction::Result result, const net::RecordParsed* record) {
543 transactions_finished_++; 543 transactions_finished_++;
544 544
545 if (result == net::MDnsTransaction::RESULT_RECORD) { 545 if (result == net::MDnsTransaction::RESULT_RECORD) {
546 if (record->type() == net::dns_protocol::kTypeA) { 546 if (record->type() == net::dns_protocol::kTypeA) {
547 const net::ARecordRdata* rdata = record->rdata<net::ARecordRdata>(); 547 const net::ARecordRdata* rdata = record->rdata<net::ARecordRdata>();
548 address_ipv4_ = rdata->address(); 548 address_ipv4_ =
549 net::IPAddress(&rdata->address().front(), rdata->address().size());
549 } else { 550 } else {
550 DCHECK_EQ(net::dns_protocol::kTypeAAAA, record->type()); 551 DCHECK_EQ(net::dns_protocol::kTypeAAAA, record->type());
551 const net::AAAARecordRdata* rdata = record->rdata<net::AAAARecordRdata>(); 552 const net::AAAARecordRdata* rdata = record->rdata<net::AAAARecordRdata>();
552 address_ipv6_ = rdata->address(); 553 address_ipv6_ =
554 net::IPAddress(&rdata->address().front(), rdata->address().size());
553 } 555 }
554 } 556 }
555 557
556 if (transactions_finished_ == 1 && 558 if (transactions_finished_ == 1 &&
557 address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) { 559 address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) {
558 timeout_callback_.Reset(base::Bind( 560 timeout_callback_.Reset(base::Bind(
559 &LocalDomainResolverImpl::SendResolvedAddresses, 561 &LocalDomainResolverImpl::SendResolvedAddresses,
560 base::Unretained(this))); 562 base::Unretained(this)));
561 563
562 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 564 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
563 FROM_HERE, timeout_callback_.callback(), 565 FROM_HERE, timeout_callback_.callback(),
564 base::TimeDelta::FromMilliseconds(kLocalDomainSecondAddressTimeoutMs)); 566 base::TimeDelta::FromMilliseconds(kLocalDomainSecondAddressTimeoutMs));
565 } else if (transactions_finished_ == 2 567 } else if (transactions_finished_ == 2
566 || address_family_ != net::ADDRESS_FAMILY_UNSPECIFIED) { 568 || address_family_ != net::ADDRESS_FAMILY_UNSPECIFIED) {
567 SendResolvedAddresses(); 569 SendResolvedAddresses();
568 } 570 }
569 } 571 }
570 572
571 bool LocalDomainResolverImpl::IsSuccess() { 573 bool LocalDomainResolverImpl::IsSuccess() {
572 return !address_ipv4_.empty() || !address_ipv6_.empty(); 574 return address_ipv4_.IsIPv4() || address_ipv6_.IsIPv6();
573 } 575 }
574 576
575 void LocalDomainResolverImpl::SendResolvedAddresses() { 577 void LocalDomainResolverImpl::SendResolvedAddresses() {
576 transaction_a_.reset(); 578 transaction_a_.reset();
577 transaction_aaaa_.reset(); 579 transaction_aaaa_.reset();
578 timeout_callback_.Cancel(); 580 timeout_callback_.Cancel();
579 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_); 581 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_);
580 } 582 }
581 583
582 } // namespace local_discovery 584 } // namespace local_discovery
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698