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

Side by Side Diff: chrome/browser/local_discovery/service_discovery_client_mdns.h

Issue 256913005: In browser process implementation of ServiceDiscoveryClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tue 04/29/2014 14:32:52.76 Created 6 years, 7 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 | « no previous file | chrome/browser/local_discovery/service_discovery_client_mdns.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 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 #ifndef CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_UTILITY_H_ 5 #ifndef CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_MDNS_H_
6 #define CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_UTILITY_H_ 6 #define CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_MDNS_H_
7 7
8 #include <set>
8 #include <string> 9 #include <string>
9 10
10 #include "base/cancelable_callback.h" 11 #include "base/cancelable_callback.h"
11 #include "chrome/browser/local_discovery/service_discovery_shared_client.h" 12 #include "chrome/browser/local_discovery/service_discovery_shared_client.h"
12 #include "chrome/common/local_discovery/service_discovery_client.h" 13 #include "chrome/common/local_discovery/service_discovery_client.h"
13 #include "net/base/network_change_notifier.h" 14 #include "net/base/network_change_notifier.h"
15 #include "net/dns/mdns_client.h"
14 16
15 namespace local_discovery { 17 namespace local_discovery {
16 18
17 class ServiceDiscoveryHostClient; 19 // Implementation of ServiceDiscoverySharedClient with front-end of UI thread
18 20 // and networking code on IO thread.
19 // Wrapper for ServiceDiscoveryHostClient to hide restarting of utility process 21 class ServiceDiscoveryClientMdns
20 // from mdns users.
21 class ServiceDiscoveryClientUtility
22 : public ServiceDiscoverySharedClient, 22 : public ServiceDiscoverySharedClient,
23 public net::NetworkChangeNotifier::NetworkChangeObserver { 23 public net::NetworkChangeNotifier::NetworkChangeObserver {
24 public: 24 public:
25 ServiceDiscoveryClientUtility(); 25 class Proxy;
26 ServiceDiscoveryClientMdns();
26 27
27 // ServiceDiscoveryClient implementation. 28 // ServiceDiscoveryClient implementation.
28 virtual scoped_ptr<ServiceWatcher> CreateServiceWatcher( 29 virtual scoped_ptr<ServiceWatcher> CreateServiceWatcher(
29 const std::string& service_type, 30 const std::string& service_type,
30 const ServiceWatcher::UpdatedCallback& callback) OVERRIDE; 31 const ServiceWatcher::UpdatedCallback& callback) OVERRIDE;
31 virtual scoped_ptr<ServiceResolver> CreateServiceResolver( 32 virtual scoped_ptr<ServiceResolver> CreateServiceResolver(
32 const std::string& service_name, 33 const std::string& service_name,
33 const ServiceResolver::ResolveCompleteCallback& callback) OVERRIDE; 34 const ServiceResolver::ResolveCompleteCallback& callback) OVERRIDE;
34 virtual scoped_ptr<LocalDomainResolver> CreateLocalDomainResolver( 35 virtual scoped_ptr<LocalDomainResolver> CreateLocalDomainResolver(
35 const std::string& domain, 36 const std::string& domain,
36 net::AddressFamily address_family, 37 net::AddressFamily address_family,
37 const LocalDomainResolver::IPAddressCallback& callback) OVERRIDE; 38 const LocalDomainResolver::IPAddressCallback& callback) OVERRIDE;
38 39
39 // net::NetworkChangeNotifier::NetworkChangeObserver implementation. 40 // net::NetworkChangeNotifier::NetworkChangeObserver implementation.
40 virtual void OnNetworkChanged( 41 virtual void OnNetworkChanged(
41 net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; 42 net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
42 43
43 private: 44 private:
44 friend class base::RefCounted<ServiceDiscoveryClientUtility>; 45 virtual ~ServiceDiscoveryClientMdns();
45 46
46 virtual ~ServiceDiscoveryClientUtility();
47 void ScheduleStartNewClient(); 47 void ScheduleStartNewClient();
48 void StartNewClient(); 48 void StartNewClient();
49 void OnInterfaceListReady(const net::InterfaceIndexFamilyList& interfaces);
50 void OnMdnsInitialized(bool success);
49 void ReportSuccess(); 51 void ReportSuccess();
52 void InvalidateWeakPtrs();
53 void Reset();
50 54
51 scoped_refptr<ServiceDiscoveryHostClient> host_client_; 55 bool PostToMdnsThread(const base::Closure& task);
56
57 std::set<Proxy*> proxies_;
58
59 scoped_refptr<base::SequencedTaskRunner> mdns_runner_;
60
61 // Access only on |mdns_runner_| thread.
62 scoped_ptr<net::MDnsClient> mdns_;
63
64 // Access only on |mdns_runner_| thread.
65 scoped_ptr<ServiceDiscoveryClient> client_;
66
67 // Counter of restart attempts we have made after network change.
52 int restart_attempts_; 68 int restart_attempts_;
53 base::WeakPtrFactory<ServiceDiscoveryClientUtility> weak_ptr_factory_;
54 69
55 DISALLOW_COPY_AND_ASSIGN(ServiceDiscoveryClientUtility); 70 // If false delay tasks until initialization is posted to |mdns_runner_|
71 // thread.
72 bool need_dalay_mdns_tasks_;
73
74 // Delayed |mdns_runner_| tasks.
75 std::vector<base::Closure> delayed_tasks_;
76
77 base::WeakPtrFactory<ServiceDiscoveryClientMdns> weak_ptr_factory_;
78
79 DISALLOW_COPY_AND_ASSIGN(ServiceDiscoveryClientMdns);
56 }; 80 };
57 81
58 } // namespace local_discovery 82 } // namespace local_discovery
59 83
60 #endif // CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_UTILITY_H_ 84 #endif // CHROME_BROWSER_LOCAL_DISCOVERY_SERVICE_DISCOVERY_CLIENT_MDNS_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/local_discovery/service_discovery_client_mdns.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698