| 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 "chrome/browser/local_discovery/privet_http_asynchronous_factory_impl.h
" | 5 #include "chrome/browser/local_discovery/privet_http_asynchronous_factory_impl.h
" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "chrome/browser/local_discovery/privet_http_impl.h" | 10 #include "chrome/browser/local_discovery/privet_http_impl.h" |
| 11 #include "chrome/browser/local_discovery/service_discovery_shared_client.h" |
| 11 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
| 12 | 13 |
| 13 namespace local_discovery { | 14 namespace local_discovery { |
| 14 | 15 |
| 15 namespace { | 16 namespace { |
| 16 | 17 |
| 17 std::string IPAddressToHostString(const net::IPAddressNumber& address) { | 18 std::string IPAddressToHostString(const net::IPAddressNumber& address) { |
| 18 std::string address_str = net::IPAddressToString(address); | 19 std::string address_str = net::IPAddressToString(address); |
| 19 | 20 |
| 20 // IPv6 addresses need to be surrounded by brackets. | 21 // IPv6 addresses need to be surrounded by brackets. |
| 21 if (address.size() == net::kIPv6AddressSize) { | 22 if (address.size() == net::kIPv6AddressSize) { |
| 22 address_str = base::StringPrintf("[%s]", address_str.c_str()); | 23 address_str = base::StringPrintf("[%s]", address_str.c_str()); |
| 23 } | 24 } |
| 24 | 25 |
| 25 return address_str; | 26 return address_str; |
| 26 } | 27 } |
| 27 | 28 |
| 28 } // namespace | 29 } // namespace |
| 29 | 30 |
| 30 PrivetHTTPAsynchronousFactoryImpl::PrivetHTTPAsynchronousFactoryImpl( | 31 PrivetHTTPAsynchronousFactoryImpl::PrivetHTTPAsynchronousFactoryImpl( |
| 31 ServiceDiscoveryClient* service_discovery_client, | |
| 32 net::URLRequestContextGetter* request_context) | 32 net::URLRequestContextGetter* request_context) |
| 33 : service_discovery_client_(service_discovery_client), | 33 : request_context_(request_context) { |
| 34 request_context_(request_context) { | |
| 35 } | 34 } |
| 36 | 35 |
| 37 PrivetHTTPAsynchronousFactoryImpl::~PrivetHTTPAsynchronousFactoryImpl() { | 36 PrivetHTTPAsynchronousFactoryImpl::~PrivetHTTPAsynchronousFactoryImpl() { |
| 38 } | 37 } |
| 39 | 38 |
| 40 scoped_ptr<PrivetHTTPResolution> | 39 scoped_ptr<PrivetHTTPResolution> |
| 41 PrivetHTTPAsynchronousFactoryImpl::CreatePrivetHTTP( | 40 PrivetHTTPAsynchronousFactoryImpl::CreatePrivetHTTP( |
| 42 const std::string& name, | 41 const std::string& name, |
| 43 const net::HostPortPair& address, | 42 const net::HostPortPair& address, |
| 44 const ResultCallback& callback) { | 43 const ResultCallback& callback) { |
| 45 return scoped_ptr<PrivetHTTPResolution>( | 44 return scoped_ptr<PrivetHTTPResolution>( |
| 46 new ResolutionImpl(name, | 45 new ResolutionImpl(name, address, callback, request_context_.get())); |
| 47 address, | |
| 48 callback, | |
| 49 service_discovery_client_, | |
| 50 request_context_.get())); | |
| 51 } | 46 } |
| 52 | 47 |
| 53 PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::ResolutionImpl( | 48 PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::ResolutionImpl( |
| 54 const std::string& name, | 49 const std::string& name, |
| 55 const net::HostPortPair& address, | 50 const net::HostPortPair& address, |
| 56 const ResultCallback& callback, | 51 const ResultCallback& callback, |
| 57 ServiceDiscoveryClient* service_discovery_client, | |
| 58 net::URLRequestContextGetter* request_context) | 52 net::URLRequestContextGetter* request_context) |
| 59 : name_(name), | 53 : name_(name), |
| 60 hostport_(address), | 54 hostport_(address), |
| 61 callback_(callback), | 55 callback_(callback), |
| 62 request_context_(request_context) { | 56 request_context_(request_context) { |
| 57 service_discovery_client_ = ServiceDiscoverySharedClient::GetInstance(); |
| 58 |
| 63 net::AddressFamily address_family = net::ADDRESS_FAMILY_UNSPECIFIED; | 59 net::AddressFamily address_family = net::ADDRESS_FAMILY_UNSPECIFIED; |
| 64 | |
| 65 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 60 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 66 switches::kPrivetIPv6Only)) { | 61 switches::kPrivetIPv6Only)) { |
| 67 address_family = net::ADDRESS_FAMILY_IPV6; | 62 address_family = net::ADDRESS_FAMILY_IPV6; |
| 68 } | 63 } |
| 69 | 64 |
| 70 resolver_ = service_discovery_client->CreateLocalDomainResolver( | 65 resolver_ = service_discovery_client_->CreateLocalDomainResolver( |
| 71 address.host(), | 66 address.host(), address_family, |
| 72 address_family, | |
| 73 base::Bind(&ResolutionImpl::ResolveComplete, base::Unretained(this))); | 67 base::Bind(&ResolutionImpl::ResolveComplete, base::Unretained(this))); |
| 74 } | 68 } |
| 75 | 69 |
| 76 PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::~ResolutionImpl() { | 70 PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::~ResolutionImpl() { |
| 77 } | 71 } |
| 78 | 72 |
| 79 void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::Start() { | 73 void PrivetHTTPAsynchronousFactoryImpl::ResolutionImpl::Start() { |
| 80 resolver_->Start(); | 74 resolver_->Start(); |
| 81 } | 75 } |
| 82 | 76 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 100 | 94 |
| 101 DCHECK(!address.empty()); | 95 DCHECK(!address.empty()); |
| 102 | 96 |
| 103 net::HostPortPair new_address = | 97 net::HostPortPair new_address = |
| 104 net::HostPortPair(IPAddressToHostString(address), hostport_.port()); | 98 net::HostPortPair(IPAddressToHostString(address), hostport_.port()); |
| 105 callback_.Run(scoped_ptr<PrivetHTTPClient>( | 99 callback_.Run(scoped_ptr<PrivetHTTPClient>( |
| 106 new PrivetHTTPClientImpl(name_, new_address, request_context_.get()))); | 100 new PrivetHTTPClientImpl(name_, new_address, request_context_.get()))); |
| 107 } | 101 } |
| 108 | 102 |
| 109 } // namespace local_discovery | 103 } // namespace local_discovery |
| OLD | NEW |