Index: chrome/browser/local_discovery/privet_device_resolver.cc |
diff --git a/chrome/browser/local_discovery/privet_device_resolver.cc b/chrome/browser/local_discovery/privet_device_resolver.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6bbb13b6bf5b31dd93b44b509103c84f862eed0d |
--- /dev/null |
+++ b/chrome/browser/local_discovery/privet_device_resolver.cc |
@@ -0,0 +1,42 @@ |
+// 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 |