You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2012/05/14 23:20:21 UTC

svn commit: r1338432 - in /incubator/mesos/trunk/src: common/strings.hpp master/slaves_manager.cpp tests/strings_tests.cpp

Author: benh
Date: Mon May 14 21:20:21 2012
New Revision: 1338432

URL: http://svn.apache.org/viewvc?rev=1338432&view=rev
Log:
Updated the strings::pairs function to take multiple delimiters (https://reviews.apache.org/r/5103).

Modified:
    incubator/mesos/trunk/src/common/strings.hpp
    incubator/mesos/trunk/src/master/slaves_manager.cpp
    incubator/mesos/trunk/src/tests/strings_tests.cpp

Modified: incubator/mesos/trunk/src/common/strings.hpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/common/strings.hpp?rev=1338432&r1=1338431&r2=1338432&view=diff
==============================================================================
--- incubator/mesos/trunk/src/common/strings.hpp (original)
+++ incubator/mesos/trunk/src/common/strings.hpp Mon May 14 21:20:21 2012
@@ -134,15 +134,22 @@ inline std::vector<std::string> split(
 }
 
 
+// Returns a map of strings to strings based on calling split
+// twice. For example:
+//
+//   pairs("foo=1;bar=2;foo=3", ";&", "=")
+//
+// Would return a map with the following:
+//   foo: [1, 3]
+//   bar: [2]
 inline std::map<std::string, std::vector<std::string> > pairs(
-    const std::string& s, char delim1, char delim2)
+    const std::string& s, const std::string& delims1, const std::string& delims2)
 {
   std::map<std::string, std::vector<std::string> > result;
 
-  const std::vector<std::string>& tokens = split(s, std::string(1, delim1));
+  const std::vector<std::string>& tokens = split(s, delims1);
   foreach (const std::string& token, tokens) {
-    const std::vector<std::string>& pairs =
-      split(token, std::string(1, delim2));
+    const std::vector<std::string>& pairs = split(token, delims2);
     if (pairs.size() == 2) {
       result[pairs[0]].push_back(pairs[1]);
     }

Modified: incubator/mesos/trunk/src/master/slaves_manager.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/master/slaves_manager.cpp?rev=1338432&r1=1338431&r2=1338432&view=diff
==============================================================================
--- incubator/mesos/trunk/src/master/slaves_manager.cpp (original)
+++ incubator/mesos/trunk/src/master/slaves_manager.cpp Mon May 14 21:20:21 2012
@@ -820,7 +820,7 @@ Future<HttpResponse> SlavesManager::add(
   uint16_t port = 0;
 
   map<string, vector<string> > pairs =
-    strings::pairs(request.query, ',', '=');
+    strings::pairs(request.query, ",", "=");
 
   // Make sure there is at least a 'hostname=' and 'port='.
   if (pairs.count("hostname") == 0) {
@@ -863,7 +863,7 @@ Future<HttpResponse> SlavesManager::remo
   uint16_t port = 0;
 
   map<string, vector<string> > pairs =
-    strings::pairs(request.query, ',', '=');
+    strings::pairs(request.query, ",", "=");
 
   // Make sure there is at least a 'hostname=' and 'port='.
   if (pairs.count("hostname") == 0) {
@@ -906,7 +906,7 @@ Future<HttpResponse> SlavesManager::acti
   uint16_t port = 0;
 
   map<string, vector<string> > pairs =
-    strings::pairs(request.query, ',', '=');
+    strings::pairs(request.query, ",", "=");
 
   // Make sure there is at least a 'hostname=' and 'port='.
   if (pairs.count("hostname") == 0) {
@@ -949,7 +949,7 @@ Future<HttpResponse> SlavesManager::deac
   uint16_t port = 0;
 
   map<string, vector<string> > pairs =
-    strings::pairs(request.query, ',', '=');
+    strings::pairs(request.query, ",", "=");
 
   // Make sure there is at least a 'hostname=' and 'port='.
   if (pairs.count("hostname") == 0) {

Modified: incubator/mesos/trunk/src/tests/strings_tests.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/tests/strings_tests.cpp?rev=1338432&r1=1338431&r2=1338432&view=diff
==============================================================================
--- incubator/mesos/trunk/src/tests/strings_tests.cpp (original)
+++ incubator/mesos/trunk/src/tests/strings_tests.cpp Mon May 14 21:20:21 2012
@@ -134,7 +134,7 @@ TEST(StringsTest, SplitWithMultipleDelim
 
 TEST(StringsTest, Pairs)
 {
-  map<string, vector<string> > pairs = strings::pairs("one=1,two=2", ',', '=');
+  map<string, vector<string> > pairs = strings::pairs("one=1,two=2", ",", "=");
   ASSERT_EQ(2, pairs.size());
   ASSERT_EQ(1, pairs.count("one"));
   ASSERT_EQ(1, pairs["one"].size());