You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2006/12/06 09:11:59 UTC

svn commit: r482958 - in /incubator/qpid/trunk/qpid/cpp: lib/broker/Configuration.cpp lib/broker/Configuration.h src/qpidd.cpp tests/ConfigurationTest.cpp

Author: gsim
Date: Wed Dec  6 00:11:57 2006
New Revision: 482958

URL: http://svn.apache.org/viewvc?view=rev&rev=482958
Log:
Patch sumbitted to qpid-dev:

2006-12-05  Jim Meyering  <me...@redhat.com>

	Improve --help output.  Add --version option.
	* lib/broker/Configuration.cpp: Include <config.h>.
	(Configuration::Configuration): Use the active voice.
	Handle --version.
	(Configuration::usage): Add Usage:... and bug-reporting address.
	Output short+long options like "-o, --option ...", so that help2man
	will format them properly.
	* lib/broker/Configuration.h:
	(class Configuration) [version, programName]: New members.
	(parse): Update prototype.
	(isVersion, setValue): New prototypes.
	* src/qpidd.cpp: Include <config.h>.
	(programName): New file-scoped global.
	(handle_signal, main): Emit diagnostics to stderr.
	(main): Pass program name to config.parse.
	(main): Handle new --version option.

Also updated ConfigurationTest to use the modified parse() method.


Modified:
    incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.cpp
    incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.h
    incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
    incubator/qpid/trunk/qpid/cpp/tests/ConfigurationTest.cpp

Modified: incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.cpp?view=diff&rev=482958&r1=482957&r2=482958
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.cpp Wed Dec  6 00:11:57 2006
@@ -7,9 +7,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -20,18 +20,20 @@
  */
 #include <Configuration.h>
 #include <string.h>
+#include <config.h>
 
 using namespace qpid::broker;
 using namespace std;
 
-Configuration::Configuration() : 
+Configuration::Configuration() :
     trace('t', "trace", "Print incoming & outgoing frames to the console (default=false)", false),
-    port('p', "port", "Sets the port to listen on (default=5672)", 5672),
-    workerThreads("worker-threads", "Sets the number of worker threads to use (default=5).", 5),
-    maxConnections("max-connections", "Sets the maximum number of connections the broker can accept (default=500).", 500),
-    connectionBacklog("connection-backlog", "Sets the connection backlog for the servers socket (default=10)", 10),
-    store('s', "store", "Sets the message store module to use (default='' which implies no store)", ""),
-    help("help", "Prints usage information", false)
+    port('p', "port", "Set the port to listen on (default=5672)", 5672),
+    workerThreads("worker-threads", "Set the number of worker threads to use (default=5).", 5),
+    maxConnections("max-connections", "Set the maximum number of connections the broker can accept (default=500).", 500),
+    connectionBacklog("connection-backlog", "Set the connection backlog for the servers socket (default=10)", 10),
+    store('s', "store", "Set the message store module to use (default='' which implies no store)", ""),
+    help("help", "Print usage information", false),
+    version("version", "Print version information", false)
 {
     options.push_back(&trace);
     options.push_back(&port);
@@ -40,11 +42,13 @@
     options.push_back(&connectionBacklog);
     options.push_back(&store);
     options.push_back(&help);
+    options.push_back(&version);
 }
 
 Configuration::~Configuration(){}
 
-void Configuration::parse(int argc, char** argv){
+void Configuration::parse(char const *progName, int argc, char** argv){
+    programName = progName;
     int position = 1;
     while(position < argc){
         bool matched(false);
@@ -59,15 +63,25 @@
 }
 
 void Configuration::usage(){
+    std::cout << "Usage: " << programName << " [OPTION]..." << std::endl
+	      << "Start the Qpid broker daemon." << std::endl << std::endl
+	      << "Options:" << std::endl;
     for(op_iterator i = options.begin(); i < options.end(); i++){
         (*i)->print(std::cout);
     }
+
+    std::cout << std::endl << "Report bugs to <" << PACKAGE_BUGREPORT << ">."
+	      << std::endl;
 }
 
 bool Configuration::isHelp() const {
     return help.getValue();
 }
 
+bool Configuration::isVersion() const {
+    return version.getValue();
+}
+
 bool Configuration::isTrace() const {
     return trace.getValue();
 }
@@ -92,10 +106,10 @@
     return store.getValue();
 }
 
-Configuration::Option::Option(const char _flag, const string& _name, const string& _desc) : 
+Configuration::Option::Option(const char _flag, const string& _name, const string& _desc) :
     flag(string("-") + _flag), name("--" +_name), desc(_desc) {}
 
-Configuration::Option::Option(const string& _name, const string& _desc) : 
+Configuration::Option::Option(const string& _name, const string& _desc) :
     flag(""), name("--" + _name), desc(_desc) {}
 
 Configuration::Option::~Option(){}
@@ -121,12 +135,14 @@
 }
 
 void Configuration::Option::print(ostream& out) const {
-    out << "    ";
+    out << "  ";
     if(flag.length() > 0){
-        out << flag << " or ";
+        out << flag << ", ";
+    } else {
+        out << "    ";
     }
     out << name;
-    if(needsValue()) out << "<value>";
+    if(needsValue()) out << " <value>";
     out << std::endl;
     out << "            " << desc << std::endl;
 }
@@ -134,10 +150,10 @@
 
 // String Option:
 
-Configuration::StringOption::StringOption(const char _flag, const string& _name, const string& _desc, const string _value) : 
+Configuration::StringOption::StringOption(const char _flag, const string& _name, const string& _desc, const string _value) :
     Option(_flag,_name,_desc), defaultValue(_value), value(_value) {}
 
-Configuration::StringOption::StringOption(const string& _name, const string& _desc, const string _value) : 
+Configuration::StringOption::StringOption(const string& _name, const string& _desc, const string _value) :
     Option(_name,_desc), defaultValue(_value), value(_value) {}
 
 Configuration::StringOption::~StringOption(){}
@@ -156,10 +172,10 @@
 
 // Int Option:
 
-Configuration::IntOption::IntOption(const char _flag, const string& _name, const string& _desc, const int _value) : 
+Configuration::IntOption::IntOption(const char _flag, const string& _name, const string& _desc, const int _value) :
     Option(_flag,_name,_desc), defaultValue(_value), value(_value) {}
 
-Configuration::IntOption::IntOption(const string& _name, const string& _desc, const int _value) : 
+Configuration::IntOption::IntOption(const string& _name, const string& _desc, const int _value) :
     Option(_name,_desc), defaultValue(_value), value(_value) {}
 
 Configuration::IntOption::~IntOption(){}
@@ -178,10 +194,10 @@
 
 // Bool Option:
 
-Configuration::BoolOption::BoolOption(const char _flag, const string& _name, const string& _desc, const bool _value) : 
+Configuration::BoolOption::BoolOption(const char _flag, const string& _name, const string& _desc, const bool _value) :
     Option(_flag,_name,_desc), defaultValue(_value), value(_value) {}
 
-Configuration::BoolOption::BoolOption(const string& _name, const string& _desc, const bool _value) : 
+Configuration::BoolOption::BoolOption(const string& _name, const string& _desc, const bool _value) :
     Option(_name,_desc), defaultValue(_value), value(_value) {}
 
 Configuration::BoolOption::~BoolOption(){}

Modified: incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.h?view=diff&rev=482958&r1=482957&r2=482958
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.h (original)
+++ incubator/qpid/trunk/qpid/cpp/lib/broker/Configuration.h Wed Dec  6 00:11:57 2006
@@ -97,6 +97,8 @@
             IntOption connectionBacklog;
             StringOption store;
             BoolOption help;
+            BoolOption version;
+            char const *programName;
 
             typedef std::vector<Option*>::iterator op_iterator;
             std::vector<Option*> options;
@@ -111,9 +113,10 @@
             Configuration();
             ~Configuration();
 
-            void parse(int argc, char** argv);
+            void parse(char const*, int argc, char** argv);
 
             bool isHelp() const;
+            bool isVersion() const;
             bool isTrace() const;
             int getPort() const;
             int getWorkerThreads() const;
@@ -122,6 +125,7 @@
             const std::string& getStore() const;
 
             void setHelp(bool b) { help.setValue(b); }
+            void setVersion(bool b) { version.setValue(b); }
             void setTrace(bool b) { trace.setValue(b); }
             void setPort(int i) { port.setValue(i); }
             void setWorkerThreads(int i) { workerThreads.setValue(i); }

Modified: incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp?view=diff&rev=482958&r1=482957&r2=482958
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpidd.cpp Wed Dec  6 00:11:57 2006
@@ -7,9 +7,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -23,6 +23,9 @@
 #include <signal.h>
 #include <iostream>
 #include <memory>
+#include <config.h>
+
+static char const* programName = "qpidd";
 
 using namespace qpid::broker;
 using namespace qpid::sys;
@@ -30,7 +33,7 @@
 Broker::shared_ptr broker;
 
 void handle_signal(int /*signal*/){
-    std::cout << "Shutting down..." << std::endl;
+    std::cerr << "Shutting down..." << std::endl;
     broker->shutdown();
 }
 
@@ -38,9 +41,12 @@
 {
     Configuration config;
     try {
-        config.parse(argc, argv);
+        config.parse(programName, argc, argv);
         if(config.isHelp()){
             config.usage();
+        }else if(config.isVersion()){
+            std::cout << programName << " (" << PACKAGE_NAME << ") version "
+                      << PACKAGE_VERSION << std::endl;
         }else{
             broker = Broker::create(config);
             signal(SIGINT, handle_signal);
@@ -48,7 +54,7 @@
         }
         return 0;
     } catch(const std::exception& e) {
-        std::cout << e.what() << std::endl;
+        std::cerr << e.what() << std::endl;
     }
     return 1;
 }

Modified: incubator/qpid/trunk/qpid/cpp/tests/ConfigurationTest.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/tests/ConfigurationTest.cpp?view=diff&rev=482958&r1=482957&r2=482958
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/tests/ConfigurationTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/tests/ConfigurationTest.cpp Wed Dec  6 00:11:57 2006
@@ -41,7 +41,7 @@
     {
         Configuration conf;
         char* argv[] = {"ignore", "--help"};
-        conf.parse(2, argv);
+        conf.parse("ignore", 2, argv);
         CPPUNIT_ASSERT(conf.isHelp());
     }
 
@@ -49,7 +49,7 @@
     {
         Configuration conf;
         char* argv[] = {"ignore", "--port", "6789"};
-        conf.parse(3, argv);
+        conf.parse("ignore", 3, argv);
         CPPUNIT_ASSERT_EQUAL(6789, conf.getPort());
     }
 
@@ -57,7 +57,7 @@
     {
         Configuration conf;
         char* argv[] = {"ignore", "-p", "6789"};
-        conf.parse(3, argv);
+        conf.parse("ignore", 3, argv);
         CPPUNIT_ASSERT_EQUAL(6789, conf.getPort());
     }
 
@@ -65,7 +65,7 @@
     {
         Configuration conf;
         char* argv[] = {"ignore", "--store", "my-store-module.so"};
-        conf.parse(3, argv);
+        conf.parse("ignore", 3, argv);
         std::string expected("my-store-module.so");
         CPPUNIT_ASSERT_EQUAL(expected, conf.getStore());
     }
@@ -74,7 +74,7 @@
     {        
         Configuration conf;
         char* argv[] = {"ignore", "-t", "--worker-threads", "10"};
-        conf.parse(4, argv);
+        conf.parse("ignore", 4, argv);
         CPPUNIT_ASSERT_EQUAL(5672, conf.getPort());//default
         CPPUNIT_ASSERT_EQUAL(10, conf.getWorkerThreads());
         CPPUNIT_ASSERT(conf.isTrace());