OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
11 #include <utility> | 11 #include <utility> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "base/memory/linked_ptr.h" | |
16 #include "base/observer_list.h" | 15 #include "base/observer_list.h" |
17 #include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h" | 16 #include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h" |
18 | 17 |
19 namespace local_discovery { | 18 namespace local_discovery { |
20 class ServiceDiscoverySharedClient; | 19 class ServiceDiscoverySharedClient; |
21 class ServiceDiscoveryClient; | 20 class ServiceDiscoveryClient; |
22 } | 21 } |
23 | 22 |
24 namespace extensions { | 23 namespace extensions { |
25 | 24 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 | 86 |
88 const DnsSdRegistry::DnsSdServiceList& GetServiceList(); | 87 const DnsSdRegistry::DnsSdServiceList& GetServiceList(); |
89 | 88 |
90 private: | 89 private: |
91 int ref_count; | 90 int ref_count; |
92 std::unique_ptr<DnsSdDeviceLister> lister_; | 91 std::unique_ptr<DnsSdDeviceLister> lister_; |
93 DnsSdRegistry::DnsSdServiceList service_list_; | 92 DnsSdRegistry::DnsSdServiceList service_list_; |
94 DISALLOW_COPY_AND_ASSIGN(ServiceTypeData); | 93 DISALLOW_COPY_AND_ASSIGN(ServiceTypeData); |
95 }; | 94 }; |
96 | 95 |
97 // Maps service types to associated data such as listers and service lists. | |
98 typedef std::map<std::string, linked_ptr<ServiceTypeData> > | |
99 DnsSdServiceTypeDataMap; | |
100 | |
101 virtual DnsSdDeviceLister* CreateDnsSdDeviceLister( | 96 virtual DnsSdDeviceLister* CreateDnsSdDeviceLister( |
102 DnsSdDelegate* delegate, | 97 DnsSdDelegate* delegate, |
103 const std::string& service_type, | 98 const std::string& service_type, |
104 local_discovery::ServiceDiscoverySharedClient* discovery_client); | 99 local_discovery::ServiceDiscoverySharedClient* discovery_client); |
105 | 100 |
106 // DnsSdDelegate implementation: | 101 // DnsSdDelegate implementation: |
107 void ServiceChanged(const std::string& service_type, | 102 void ServiceChanged(const std::string& service_type, |
108 bool added, | 103 bool added, |
109 const DnsSdService& service) override; | 104 const DnsSdService& service) override; |
110 void ServiceRemoved(const std::string& service_type, | 105 void ServiceRemoved(const std::string& service_type, |
111 const std::string& service_name) override; | 106 const std::string& service_name) override; |
112 void ServicesFlushed(const std::string& service_type) override; | 107 void ServicesFlushed(const std::string& service_type) override; |
113 | 108 |
114 DnsSdServiceTypeDataMap service_data_map_; | 109 std::map<std::string, std::unique_ptr<ServiceTypeData>> service_data_map_; |
115 | 110 |
116 private: | 111 private: |
117 void DispatchApiEvent(const std::string& service_type); | 112 void DispatchApiEvent(const std::string& service_type); |
118 bool IsRegistered(const std::string& service_type); | 113 bool IsRegistered(const std::string& service_type); |
119 | 114 |
120 scoped_refptr<local_discovery::ServiceDiscoverySharedClient> | 115 scoped_refptr<local_discovery::ServiceDiscoverySharedClient> |
121 service_discovery_client_; | 116 service_discovery_client_; |
122 base::ObserverList<DnsSdObserver> observers_; | 117 base::ObserverList<DnsSdObserver> observers_; |
123 | 118 |
124 DISALLOW_COPY_AND_ASSIGN(DnsSdRegistry); | 119 DISALLOW_COPY_AND_ASSIGN(DnsSdRegistry); |
125 }; | 120 }; |
126 | 121 |
127 } // namespace extensions | 122 } // namespace extensions |
128 | 123 |
129 #endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ | 124 #endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ |
OLD | NEW |