Просмотр исходного кода

Factor out the cmdline arg parsing so the mpi driver can also use it

Ian Goldberg 14 лет назад
Родитель
Сommit
7ffa00afcd
3 измененных файлов с 28 добавлено и 14 удалено
  1. 23 0
      controller.cc
  2. 3 0
      controller.h
  3. 2 14
      controller_main.cc

+ 23 - 0
controller.cc

@@ -757,6 +757,29 @@ static struct evconnlistener *controller_create(struct event_base *evbase,
 	ip, boundport, false);
 }
 
+int controller_parse_args(int argc, char **argv, unsigned short &bindport,
+    Worklist &worklist)
+{
+    bindport = 0;
+
+    if (argc > 2 && !strncmp(argv[1], "-p", 2)) {
+	// A port number was specified
+	bindport = strtoul(argv[2], NULL, 10);
+	argc -= 2;
+	argv += 2;
+    }
+
+    if (argc < 3 || (argc % 2 == 0)) {
+	return 1;
+    }
+
+    for (int i=1;i<argc;i+=2) {
+	worklist.push_back(Workentry(argv[i], strtoul(argv[i+1], NULL, 10)));
+    }
+
+    return 0;
+}
+
 int controller_main(const Worklist &worklist, unsigned short bindport,
     void (*boundcb)(const char *boundaddr, unsigned short boundport))
 {

+ 3 - 0
controller.h

@@ -7,6 +7,9 @@
 typedef std::pair<const char *, unsigned int> Workentry;
 typedef std::vector<Workentry> Worklist;
 
+int controller_parse_args(int argc, char **argv, unsigned short &bindport,
+    Worklist &worklist);
+
 int controller_main(const Worklist &worklist, unsigned short bindport,
     void (*boundcb)(const char *boundaddr, unsigned short boundport));
 

+ 2 - 14
controller_main.cc

@@ -45,24 +45,12 @@ static void boundcb(const char *boundaddr, unsigned short boundport)
 int main(int argc, char **argv)
 {
     unsigned short bindport = 0;
+    Worklist worklist;
 
-    if (argc > 2 && !strncmp(argv[1], "-p", 2)) {
-	// A port number was specified
-	bindport = strtoul(argv[2], NULL, 10);
-	argc -= 2;
-	argv += 2;
-    }
-
-    if (argc < 3 || (argc % 2 == 0)) {
+    if (controller_parse_args(argc, argv, bindport, worklist)) {
 	std::cerr << "Usage: " << argv[0] << " [-p listenport] N1 iter1 N2 iter2 ...\n";
 	return 1;
     }
 
-    Worklist worklist;
-
-    for (int i=1;i<argc;i+=2) {
-	worklist.push_back(Workentry(argv[i], strtoul(argv[i+1], NULL, 10)));
-    }
-
     return controller_main(worklist, bindport, boundcb);
 }