OLD | NEW |
| (Empty) |
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 #include "chrome/browser/extensions/api/mdns/dns_sd_device_lister.h" | |
6 | |
7 #include "chrome/common/extensions/api/mdns.h" | |
8 | |
9 using local_discovery::ServiceDescription; | |
10 | |
11 namespace extensions { | |
12 | |
13 namespace { | |
14 | |
15 void FillServiceInfo(const ServiceDescription& service_description, | |
16 DnsSdService* service) { | |
17 service->service_name = service_description.service_name; | |
18 service->service_host_port = service_description.address.ToString(); | |
19 if (service_description.ip_address.IsValid()) { | |
20 service->ip_address = service_description.ip_address.ToString(); | |
21 } | |
22 service->service_data = service_description.metadata; | |
23 | |
24 VLOG(1) << "Found " << service->service_name << ", " | |
25 << service->service_host_port << ", " | |
26 << service->ip_address; | |
27 } | |
28 | |
29 } // namespace | |
30 | |
31 DnsSdDeviceLister::DnsSdDeviceLister( | |
32 local_discovery::ServiceDiscoveryClient* service_discovery_client, | |
33 DnsSdDelegate* delegate, | |
34 const std::string& service_type) | |
35 : delegate_(delegate), | |
36 device_lister_(this, service_discovery_client, service_type), | |
37 started_(false) { | |
38 } | |
39 | |
40 DnsSdDeviceLister::~DnsSdDeviceLister() { | |
41 } | |
42 | |
43 void DnsSdDeviceLister::Discover(bool force_update) { | |
44 if (!started_) { | |
45 device_lister_.Start(); | |
46 started_ = true; | |
47 VLOG(1) << "Started device lister for service type " | |
48 << device_lister_.service_type(); | |
49 } | |
50 device_lister_.DiscoverNewDevices(force_update); | |
51 VLOG(1) << "Discovery new devices for service type " | |
52 << device_lister_.service_type(); | |
53 } | |
54 | |
55 void DnsSdDeviceLister::OnDeviceChanged( | |
56 bool added, | |
57 const ServiceDescription& service_description) { | |
58 DnsSdService service; | |
59 FillServiceInfo(service_description, &service); | |
60 VLOG(1) << "OnDeviceChanged: " | |
61 << "service_name: " << service.service_name << ", " | |
62 << "added: " << added << ", " | |
63 << "service_type: " << device_lister_.service_type(); | |
64 delegate_->ServiceChanged(device_lister_.service_type(), added, service); | |
65 } | |
66 | |
67 void DnsSdDeviceLister::OnDeviceRemoved(const std::string& service_name) { | |
68 VLOG(1) << "OnDeviceRemoved: " | |
69 << "service_name: " << service_name << ", " | |
70 << "service_type: " << device_lister_.service_type(); | |
71 delegate_->ServiceRemoved(device_lister_.service_type(), service_name); | |
72 } | |
73 | |
74 void DnsSdDeviceLister::OnDeviceCacheFlushed() { | |
75 VLOG(1) << "OnDeviceCacheFlushed: " | |
76 << "service_type: " << device_lister_.service_type(); | |
77 delegate_->ServicesFlushed(device_lister_.service_type()); | |
78 device_lister_.DiscoverNewDevices(false); | |
79 } | |
80 | |
81 } // namespace extensions | |
OLD | NEW |