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
8namespace local_discovery {
9
10PrivetDeviceResolver::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
18PrivetDeviceResolver::~PrivetDeviceResolver() {
19}
20
21void 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
29void 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