123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_ 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_ 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/local_discovery/privet_http.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/local_discovery/privet_http_asynchronous_factory.h" 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/common/local_discovery/service_discovery_client.h" 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace local_discovery { 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class PrivetHTTPAsynchronousFactoryImpl : public PrivetHTTPAsynchronousFactory { 1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PrivetHTTPAsynchronousFactoryImpl( 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ServiceDiscoveryClient* service_discovery_client, 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) net::URLRequestContextGetter* request_context); 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual ~PrivetHTTPAsynchronousFactoryImpl(); 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual scoped_ptr<PrivetHTTPResolution> CreatePrivetHTTP( 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const std::string& name, 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const net::HostPortPair& address, 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const ResultCallback& callback) OVERRIDE; 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) class ResolutionImpl : public PrivetHTTPResolution { 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ResolutionImpl(const std::string& name, 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const net::HostPortPair& address, 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const ResultCallback& callback, 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ServiceDiscoveryClient* service_discovery_client, 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) net::URLRequestContextGetter* request_context); 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual ~ResolutionImpl(); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual void Start() OVERRIDE; 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual const std::string& GetName() OVERRIDE; 3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) void ResolveComplete(bool success, 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const net::IPAddressNumber& address_ipv4, 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const net::IPAddressNumber& address_ipv6); 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) std::string name_; 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) scoped_ptr<LocalDomainResolver> resolver_; 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) net::HostPortPair hostport_; 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ResultCallback callback_; 4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) scoped_refptr<net::URLRequestContextGetter> request_context_; 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) }; 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ServiceDiscoveryClient* service_discovery_client_; 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) scoped_refptr<net::URLRequestContextGetter> request_context_; 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}; 5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} // namespace local_discovery 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_HTTP_ASYNCHRONOUS_FACTORY_IMPL_H_ 58