• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 "base/bind.h"
6 #include "chrome/browser/local_discovery/privet_device_resolver.h"
7 
8 namespace local_discovery {
9 
PrivetDeviceResolver(ServiceDiscoveryClient * service_discovery_client,const std::string & service_name,const ResultCallback & callback)10 PrivetDeviceResolver::PrivetDeviceResolver(
11     ServiceDiscoveryClient* service_discovery_client,
12     const std::string& service_name,
13     const ResultCallback& callback)
14     : service_discovery_client_(service_discovery_client),
15       service_name_(service_name), callback_(callback) {
16 }
17 
~PrivetDeviceResolver()18 PrivetDeviceResolver::~PrivetDeviceResolver() {
19 }
20 
Start()21 void PrivetDeviceResolver::Start() {
22   service_resolver_ = service_discovery_client_->CreateServiceResolver(
23       service_name_,
24       base::Bind(&PrivetDeviceResolver::OnServiceResolved,
25                  base::Unretained(this)));
26   service_resolver_->StartResolving();
27 }
28 
OnServiceResolved(ServiceResolver::RequestStatus request_status,const ServiceDescription & service_description)29 void PrivetDeviceResolver::OnServiceResolved(
30     ServiceResolver::RequestStatus request_status,
31     const ServiceDescription& service_description) {
32   DeviceDescription device_description;
33   if (request_status != ServiceResolver::STATUS_SUCCESS) {
34     callback_.Run(false, device_description);
35     return;
36   }
37 
38   device_description.FillFromServiceDescription(service_description);
39   callback_.Run(true, device_description);
40 }
41 
42 }  // namespace local_discovery
43