Index: google_apis/gcm/engine/registration_info.cc |
diff --git a/google_apis/gcm/engine/registration_info.cc b/google_apis/gcm/engine/registration_info.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6a41c76e00e2fdeb42f62bcd63b574d848fa942e |
--- /dev/null |
+++ b/google_apis/gcm/engine/registration_info.cc |
@@ -0,0 +1,62 @@ |
+// 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 "google_apis/gcm/engine/registration_info.h" |
+ |
+#include "base/strings/string_util.h" |
+ |
+namespace gcm { |
+ |
+RegistrationInfo::RegistrationInfo() { |
+} |
+ |
+RegistrationInfo::~RegistrationInfo() { |
+} |
+ |
+std::string RegistrationInfo::SerializeAsString() const { |
+ if (sender_ids.empty() || registration_id.empty()) |
+ return std::string(); |
+ |
+ // Serialize as: |
+ // sender1,sender2,...=reg_id |
+ std::string value; |
+ for (std::vector<std::string>::const_iterator iter = sender_ids.begin(); |
+ iter != sender_ids.end(); ++iter) { |
+ DCHECK(!iter->empty() && |
+ iter->find(',') == std::string::npos && |
+ iter->find('=') == std::string::npos); |
+ if (!value.empty()) |
+ value += ","; |
+ value += *iter; |
+ } |
+ |
+ DCHECK(registration_id.find('=') == std::string::npos); |
+ value += '='; |
+ value += registration_id; |
+ return value; |
+} |
+ |
+bool RegistrationInfo::ParseFromString(const std::string& value) { |
+ if (value.empty()) |
+ return true; |
+ |
+ size_t pos = value.find('='); |
+ if (pos == std::string::npos) |
+ return false; |
+ |
+ std::string senders = value.substr(0, pos); |
+ registration_id = value.substr(pos + 1); |
+ |
+ Tokenize(senders, ",", &sender_ids); |
+ |
+ if (sender_ids.empty() || registration_id.empty()) { |
+ sender_ids.clear(); |
+ registration_id.clear(); |
+ return false; |
+ } |
+ |
+ return true; |
+} |
+ |
+} // namespace gcm |