privet_device_resolver.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/local_discovery/privet_device_resolver.h" 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace local_discovery { 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)PrivetDeviceResolver::PrivetDeviceResolver( 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ServiceDiscoveryClient* service_discovery_client, 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const std::string& service_name, 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const ResultCallback& callback) 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) : service_discovery_client_(service_discovery_client), 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) service_name_(service_name), callback_(callback) { 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)PrivetDeviceResolver::~PrivetDeviceResolver() { 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void PrivetDeviceResolver::Start() { 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) service_resolver_ = service_discovery_client_->CreateServiceResolver( 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) service_name_, 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) base::Bind(&PrivetDeviceResolver::OnServiceResolved, 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) base::Unretained(this))); 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) service_resolver_->StartResolving(); 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void PrivetDeviceResolver::OnServiceResolved( 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ServiceResolver::RequestStatus request_status, 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const ServiceDescription& service_description) { 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DeviceDescription device_description; 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (request_status != ServiceResolver::STATUS_SUCCESS) { 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) callback_.Run(false, device_description); 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return; 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) device_description.FillFromServiceDescription(service_description); 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) callback_.Run(true, device_description); 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace local_discovery 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)