158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <string> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/extensions/api/mdns/dns_sd_delegate.h" 118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/local_discovery/service_discovery_device_lister.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace local_discovery { 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ServiceDiscoveryClient; 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // local_discovery 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace extensions { 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Manages a watcher for a specific MDNS/DNS-SD service type and notifies 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// a delegate of changes to watched services. 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class DnsSdDeviceLister 228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) : public local_discovery::ServiceDiscoveryDeviceLister::Delegate { 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DnsSdDeviceLister( 258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) local_discovery::ServiceDiscoveryClient* service_discovery_client, 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DnsSdDelegate* delegate, 278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const std::string& service_type); 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~DnsSdDeviceLister(); 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void Discover(bool force_update); 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) protected: 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void OnDeviceChanged( 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool added, 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const local_discovery::ServiceDescription& service_description) OVERRIDE; 368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void OnDeviceRemoved(const std::string& service_name) OVERRIDE; 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void OnDeviceCacheFlushed() OVERRIDE; 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // The delegate to notify of changes to services. 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DnsSdDelegate* const delegate_; 428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) local_discovery::ServiceDiscoveryDeviceLister device_lister_; 438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool started_; 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DnsSdDeviceLister); 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace extensions 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DEVICE_LISTER_H_ 51