Home | History | Annotate | Download | only in mdns
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_
      6 #define CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_
      7 
      8 #include <string>
      9 
     10 #include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h"
     11 #include "chrome/browser/local_discovery/service_discovery_device_lister.h"
     12 
     13 namespace local_discovery {
     14 class ServiceDiscoveryClient;
     15 }  // local_discovery
     16 
     17 namespace extensions {
     18 
     19 // Manages a watcher for a specific MDNS/DNS-SD service type and notifies
     20 // a delegate of changes to watched services.
     21 class DnsSdDeviceLister
     22     : public local_discovery::ServiceDiscoveryDeviceLister::Delegate {
     23  public:
     24   DnsSdDeviceLister(
     25       local_discovery::ServiceDiscoveryClient* service_discovery_client,
     26       DnsSdDelegate* delegate,
     27       const std::string& service_type);
     28   virtual ~DnsSdDeviceLister();
     29 
     30   virtual void Discover(bool force_update);
     31 
     32  protected:
     33   virtual void OnDeviceChanged(
     34       bool added,
     35       const local_discovery::ServiceDescription& service_description) OVERRIDE;
     36   virtual void OnDeviceRemoved(const std::string& service_name) OVERRIDE;
     37   virtual void OnDeviceCacheFlushed() OVERRIDE;
     38 
     39  private:
     40   // The delegate to notify of changes to services.
     41   DnsSdDelegate* const delegate_;
     42   local_discovery::ServiceDiscoveryDeviceLister device_lister_;
     43   bool started_;
     44 
     45   DISALLOW_COPY_AND_ASSIGN(DnsSdDeviceLister);
     46 };
     47 
     48 }  // namespace extensions
     49 
     50 #endif  // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_
     51