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)