Home | History | Annotate | Download | only in service_discovery_sniffer
      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_TOOLS_SERVICE_DISCOVERY_SNIFFER_SERVICE_DISCOVERY_SNIFFER_H_
      6 #define CHROME_TOOLS_SERVICE_DISCOVERY_SNIFFER_SERVICE_DISCOVERY_SNIFFER_H_
      7 
      8 #include <map>
      9 #include <string>
     10 
     11 #include "base/memory/linked_ptr.h"
     12 #include "chrome/common/local_discovery/service_discovery_client.h"
     13 
     14 namespace local_discovery {
     15 
     16 // Resolves a service and prints out information regarding it to the
     17 // console. |client| must outlive the ServicePrinter.
     18 class ServicePrinter {
     19  public:
     20   ServicePrinter(ServiceDiscoveryClient* client,
     21                  const std::string& service_name);
     22   ~ServicePrinter();
     23 
     24   void Added();
     25   void Changed();
     26   void Removed();
     27 
     28  private:
     29   void OnServiceResolved(ServiceResolver::RequestStatus status,
     30                          const ServiceDescription& service);
     31 
     32   bool changed_;
     33   scoped_ptr<ServiceResolver> service_resolver_;
     34 
     35   DISALLOW_COPY_AND_ASSIGN(ServicePrinter);
     36 };
     37 
     38 // Monitors a service type and prints information regarding all services on it
     39 // to the console. |client| must outlive the ServiceTypePrinter.
     40 class ServiceTypePrinter {
     41  public:
     42   ServiceTypePrinter(ServiceDiscoveryClient* client,
     43                      const std::string& service_type);
     44   virtual ~ServiceTypePrinter();
     45 
     46   void Start();
     47   void OnServiceUpdated(ServiceWatcher::UpdateType,
     48                         const std::string& service_name);
     49 
     50  private:
     51   typedef std::map<std::string, linked_ptr<ServicePrinter> > ServiceMap;
     52 
     53   ServiceMap services_;
     54   scoped_ptr<ServiceWatcher> watcher_;
     55   ServiceDiscoveryClient* client_;
     56 
     57   DISALLOW_COPY_AND_ASSIGN(ServiceTypePrinter);
     58 };
     59 
     60 }  // namespace local_discovery
     61 
     62 #endif  // CHROME_TOOLS_SERVICE_DISCOVERY_SNIFFER_SERVICE_DISCOVERY_SNIFFER_H_
     63