| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/bind.h" |
| #include "chrome/browser/local_discovery/privet_device_resolver.h" |
| |
| namespace local_discovery { |
| |
| PrivetDeviceResolver::PrivetDeviceResolver( |
| ServiceDiscoveryClient* service_discovery_client, |
| const std::string& service_name, |
| const ResultCallback& callback) |
| : service_discovery_client_(service_discovery_client), |
| service_name_(service_name), callback_(callback) { |
| } |
| |
| PrivetDeviceResolver::~PrivetDeviceResolver() { |
| } |
| |
| void PrivetDeviceResolver::Start() { |
| service_resolver_ = service_discovery_client_->CreateServiceResolver( |
| service_name_, |
| base::Bind(&PrivetDeviceResolver::OnServiceResolved, |
| base::Unretained(this))); |
| service_resolver_->StartResolving(); |
| } |
| |
| void PrivetDeviceResolver::OnServiceResolved( |
| ServiceResolver::RequestStatus request_status, |
| const ServiceDescription& service_description) { |
| DeviceDescription device_description; |
| if (request_status != ServiceResolver::STATUS_SUCCESS) { |
| callback_.Run(false, device_description); |
| return; |
| } |
| |
| device_description.FillFromServiceDescription(service_description); |
| callback_.Run(true, device_description); |
| } |
| |
| } // namespace local_discovery |