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_DELEGATE_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DELEGATE_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <string> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <vector> 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace extensions { 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)struct DnsSdService { 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string service_name; 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string service_host_port; 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string ip_address; 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::vector<std::string> service_data; 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DnsSdService(); 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~DnsSdService(); 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool operator==(const DnsSdService& other) const { 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return service_name == other.service_name && 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) service_host_port == other.service_host_port && 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ip_address == other.ip_address && 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) service_data == other.service_data; 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool operator!=(const DnsSdService& other) const { 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return !(*this == other); 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Delegate that is notified when a watched service is added, updated or 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// removed. 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class DnsSdDelegate { 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void ServiceChanged(const std::string& service_type, 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool added, 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const DnsSdService& service) = 0; 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void ServiceRemoved(const std::string& service_type, 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& service_name) = 0; 438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void ServicesFlushed(const std::string& service_type) = 0; 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace extensions 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_MDNS_DNS_SD_DELEGATE_H_ 49