Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1860)

Unified Diff: chrome/browser/local_discovery/device_description.cc

Issue 107293012: Refactor device description out of PrivetDeviceLister (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/local_discovery/device_description.cc
diff --git a/chrome/browser/local_discovery/device_description.cc b/chrome/browser/local_discovery/device_description.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f68e077f3e8d4e1e4ee3cfedfec7a72de1fa39a5
--- /dev/null
+++ b/chrome/browser/local_discovery/device_description.cc
@@ -0,0 +1,68 @@
+// Copyright (c) 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 "chrome/browser/local_discovery/device_description.h"
+
+#include <vector>
+
+#include "base/strings/string_util.h"
+#include "chrome/browser/local_discovery/privet_constants.h"
+#include "chrome/common/local_discovery/service_discovery_client.h"
+
+namespace local_discovery {
+
+namespace {
+
+DeviceDescription::ConnectionState
+ConnectionStateFromString(const std::string& str) {
+ if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusOnline)) {
+ return DeviceDescription::ONLINE;
+ } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusOffline)) {
+ return DeviceDescription::OFFLINE;
+ } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusConnecting)) {
+ return DeviceDescription::CONNECTING;
+ } else if (LowerCaseEqualsASCII(str, kPrivetConnectionStatusNotConfigured)) {
+ return DeviceDescription::NOT_CONFIGURED;
+ }
+
+ return DeviceDescription::UNKNOWN;
+}
+
+} // namespace
+
+void DeviceDescription::FillFromServiceDescription(
+ const ServiceDescription& service_description) {
+ address = service_description.address;
+ ip_address = service_description.ip_address;
+ last_seen = service_description.last_seen;
+
+ for (std::vector<std::string>::const_iterator i =
+ service_description.metadata.begin();
+ i != service_description.metadata.end();
+ i++) {
+ size_t equals_pos = i->find_first_of('=');
+ if (equals_pos == std::string::npos)
+ continue; // We do not parse non key-value TXT records
+
+ std::string key = i->substr(0, equals_pos);
+ std::string value = i->substr(equals_pos + 1);
+
+ if (LowerCaseEqualsASCII(key, kPrivetTxtKeyName)) {
+ name = value;
+ } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyDescription)) {
+ description = value;
+ } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyURL)) {
+ url = value;
+ } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyType)) {
+ type = value;
+ } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyID)) {
+ id = value;
+ } else if (LowerCaseEqualsASCII(key, kPrivetTxtKeyConnectionState)) {
+ connection_state = ConnectionStateFromString(value);
+ }
+ }
+}
+
+
+} // namespace local_discovery

Powered by Google App Engine
This is Rietveld 408576698