Browse Source

Merge in parser location move.

Brian Aker 13 years ago
parent
commit
ad017afd7f
3 changed files with 99 additions and 58 deletions
  1. 0 58
      libgearman/gearman.cc
  2. 1 0
      libgearman/include.am
  3. 98 0
      libgearman/parse.cc

+ 0 - 58
libgearman/gearman.cc

@@ -92,61 +92,3 @@ const char *gearman_verbose_name(gearman_verbose_t verbose)
 
   return _verbose_name[verbose];
 }
-
-gearman_return_t gearman_parse_servers(const char *servers,
-                                       gearman_parse_server_fn *function,
-                                       void *context)
-{
-  const char *ptr= servers;
-  size_t x;
-  char host[NI_MAXHOST];
-  char port[NI_MAXSERV];
-  gearman_return_t ret;
-
-  if (ptr == NULL)
-    return (*function)(NULL, 0, context);
-
-  while (1)
-  {
-    x= 0;
-
-    while (*ptr != 0 && *ptr != ',' && *ptr != ':')
-    {
-      if (x < (NI_MAXHOST - 1))
-        host[x++]= *ptr;
-
-      ptr++;
-    }
-
-    host[x]= 0;
-
-    if (*ptr == ':')
-    {
-      ptr++;
-      x= 0;
-
-      while (*ptr != 0 && *ptr != ',')
-      {
-        if (x < (NI_MAXSERV - 1))
-          port[x++]= *ptr;
-
-        ptr++;
-      }
-
-      port[x]= 0;
-    }
-    else
-      port[0]= 0;
-
-    ret= (*function)(host, static_cast<in_port_t>(atoi(port)), context);
-    if (ret != GEARMAN_SUCCESS)
-      return ret;
-
-    if (*ptr == 0)
-      break;
-
-    ptr++;
-  }
-
-  return GEARMAN_SUCCESS;
-}

+ 1 - 0
libgearman/include.am

@@ -90,6 +90,7 @@ libgearman_libgearman_la_SOURCES= \
 				  libgearman/job.cc \
 				  libgearman/log.cc \
 				  libgearman/packet.cc \
+				  libgearman/parse.cc \
 				  libgearman/result.cc \
 				  libgearman/run.cc \
 				  libgearman/strcommand.cc \

+ 98 - 0
libgearman/parse.cc

@@ -0,0 +1,98 @@
+/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
+ * 
+ *  Gearmand client and server library.
+ *
+ *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
+ *  Copyright (C) 2008 Brian Aker, Eric Day
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are
+ *  met:
+ *
+ *      * Redistributions of source code must retain the above copyright
+ *  notice, this list of conditions and the following disclaimer.
+ *
+ *      * Redistributions in binary form must reproduce the above
+ *  copyright notice, this list of conditions and the following disclaimer
+ *  in the documentation and/or other materials provided with the
+ *  distribution.
+ *
+ *      * The names of its contributors may not be used to endorse or
+ *  promote products derived from this software without specific prior
+ *  written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <libgearman/common.h>
+#include <cstdlib>
+
+gearman_return_t gearman_parse_servers(const char *servers,
+                                       gearman_parse_server_fn *function,
+                                       void *context)
+{
+  const char *ptr= servers;
+  size_t x;
+  char host[NI_MAXHOST];
+  char port[NI_MAXSERV];
+  gearman_return_t ret;
+
+  if (ptr == NULL)
+    return (*function)(NULL, 0, context);
+
+  while (1)
+  {
+    x= 0;
+
+    while (*ptr != 0 && *ptr != ',' && *ptr != ':')
+    {
+      if (x < (NI_MAXHOST - 1))
+        host[x++]= *ptr;
+
+      ptr++;
+    }
+
+    host[x]= 0;
+
+    if (*ptr == ':')
+    {
+      ptr++;
+      x= 0;
+
+      while (*ptr != 0 && *ptr != ',')
+      {
+        if (x < (NI_MAXSERV - 1))
+          port[x++]= *ptr;
+
+        ptr++;
+      }
+
+      port[x]= 0;
+    }
+    else
+      port[0]= 0;
+
+    ret= (*function)(host, static_cast<in_port_t>(atoi(port)), context);
+    if (ret != GEARMAN_SUCCESS)
+      return ret;
+
+    if (*ptr == 0)
+      break;
+
+    ptr++;
+  }
+
+  return GEARMAN_SUCCESS;
+}