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