| 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 <string> | 10 #include <string> |
| 10 #include <utility> | 11 #include <utility> |
| 11 #include <vector> | 12 #include <vector> |
| 12 | 13 |
| 13 #include "base/macros.h" | 14 #include "base/macros.h" |
| 14 #include "base/memory/linked_ptr.h" | 15 #include "base/memory/linked_ptr.h" |
| 15 #include "base/memory/scoped_ptr.h" | |
| 16 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 17 #include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h" | 17 #include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h" |
| 18 | 18 |
| 19 namespace local_discovery { | 19 namespace local_discovery { |
| 20 class ServiceDiscoverySharedClient; | 20 class ServiceDiscoverySharedClient; |
| 21 class ServiceDiscoveryClient; | 21 class ServiceDiscoveryClient; |
| 22 } | 22 } |
| 23 | 23 |
| 24 namespace extensions { | 24 namespace extensions { |
| 25 | 25 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 | 58 |
| 59 // DNS-SD-related discovery functionality. | 59 // DNS-SD-related discovery functionality. |
| 60 virtual void RegisterDnsSdListener(const std::string& service_type); | 60 virtual void RegisterDnsSdListener(const std::string& service_type); |
| 61 virtual void UnregisterDnsSdListener(const std::string& service_type); | 61 virtual void UnregisterDnsSdListener(const std::string& service_type); |
| 62 | 62 |
| 63 protected: | 63 protected: |
| 64 // Data class for managing all the resources and information related to a | 64 // Data class for managing all the resources and information related to a |
| 65 // particular service type. | 65 // particular service type. |
| 66 class ServiceTypeData { | 66 class ServiceTypeData { |
| 67 public: | 67 public: |
| 68 explicit ServiceTypeData(scoped_ptr<DnsSdDeviceLister> lister); | 68 explicit ServiceTypeData(std::unique_ptr<DnsSdDeviceLister> lister); |
| 69 virtual ~ServiceTypeData(); | 69 virtual ~ServiceTypeData(); |
| 70 | 70 |
| 71 // Notify the data class of listeners so that it can be reference counted. | 71 // Notify the data class of listeners so that it can be reference counted. |
| 72 void ListenerAdded(); | 72 void ListenerAdded(); |
| 73 // Returns true if the last listener was removed. | 73 // Returns true if the last listener was removed. |
| 74 bool ListenerRemoved(); | 74 bool ListenerRemoved(); |
| 75 int GetListenerCount(); | 75 int GetListenerCount(); |
| 76 | 76 |
| 77 // Immediately issues a multicast DNS query for the service type owned by | 77 // Immediately issues a multicast DNS query for the service type owned by |
| 78 // |this|. | 78 // |this|. |
| 79 void ForceDiscovery(); | 79 void ForceDiscovery(); |
| 80 | 80 |
| 81 // Methods for adding, updating or removing services for this service type. | 81 // Methods for adding, updating or removing services for this service type. |
| 82 bool UpdateService(bool added, const DnsSdService& service); | 82 bool UpdateService(bool added, const DnsSdService& service); |
| 83 bool RemoveService(const std::string& service_name); | 83 bool RemoveService(const std::string& service_name); |
| 84 // Called when the discovery service was restarted. | 84 // Called when the discovery service was restarted. |
| 85 // Clear the local cache and initiate rediscovery. | 85 // Clear the local cache and initiate rediscovery. |
| 86 bool ClearServices(); | 86 bool ClearServices(); |
| 87 | 87 |
| 88 const DnsSdRegistry::DnsSdServiceList& GetServiceList(); | 88 const DnsSdRegistry::DnsSdServiceList& GetServiceList(); |
| 89 | 89 |
| 90 private: | 90 private: |
| 91 int ref_count; | 91 int ref_count; |
| 92 scoped_ptr<DnsSdDeviceLister> lister_; | 92 std::unique_ptr<DnsSdDeviceLister> lister_; |
| 93 DnsSdRegistry::DnsSdServiceList service_list_; | 93 DnsSdRegistry::DnsSdServiceList service_list_; |
| 94 DISALLOW_COPY_AND_ASSIGN(ServiceTypeData); | 94 DISALLOW_COPY_AND_ASSIGN(ServiceTypeData); |
| 95 }; | 95 }; |
| 96 | 96 |
| 97 // Maps service types to associated data such as listers and service lists. | 97 // Maps service types to associated data such as listers and service lists. |
| 98 typedef std::map<std::string, linked_ptr<ServiceTypeData> > | 98 typedef std::map<std::string, linked_ptr<ServiceTypeData> > |
| 99 DnsSdServiceTypeDataMap; | 99 DnsSdServiceTypeDataMap; |
| 100 | 100 |
| 101 virtual DnsSdDeviceLister* CreateDnsSdDeviceLister( | 101 virtual DnsSdDeviceLister* CreateDnsSdDeviceLister( |
| 102 DnsSdDelegate* delegate, | 102 DnsSdDelegate* delegate, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 120 scoped_refptr<local_discovery::ServiceDiscoverySharedClient> | 120 scoped_refptr<local_discovery::ServiceDiscoverySharedClient> |
| 121 service_discovery_client_; | 121 service_discovery_client_; |
| 122 base::ObserverList<DnsSdObserver> observers_; | 122 base::ObserverList<DnsSdObserver> observers_; |
| 123 | 123 |
| 124 DISALLOW_COPY_AND_ASSIGN(DnsSdRegistry); | 124 DISALLOW_COPY_AND_ASSIGN(DnsSdRegistry); |
| 125 }; | 125 }; |
| 126 | 126 |
| 127 } // namespace extensions | 127 } // namespace extensions |
| 128 | 128 |
| 129 #endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ | 129 #endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_REGISTRY_H_ |
| OLD | NEW |