diff options
author | Matthew Newhook <matthew@zeroc.com> | 2008-02-29 15:51:11 +0800 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2008-02-29 16:39:54 +0800 |
commit | fb4132881dde7c9b135d713a06a3b64db1f706db (patch) | |
tree | 8a037e9d4cae7ed15360ab0878d14b32ac3150a4 /cpp/demo/IceStorm/clock/Publisher.cpp | |
parent | fixing mode on php/config/Make.rules.mak (diff) | |
download | ice-fb4132881dde7c9b135d713a06a3b64db1f706db.tar.bz2 ice-fb4132881dde7c9b135d713a06a3b64db1f706db.tar.xz ice-fb4132881dde7c9b135d713a06a3b64db1f706db.zip |
Merge HA IceStorm branch.
- http://bugzilla/bugzilla/show_bug.cgi?id=2706
- http://bugzilla/bugzilla/show_bug.cgi?id=2705
Diffstat (limited to 'cpp/demo/IceStorm/clock/Publisher.cpp')
-rw-r--r-- | cpp/demo/IceStorm/clock/Publisher.cpp | 49 |
1 files changed, 20 insertions, 29 deletions
diff --git a/cpp/demo/IceStorm/clock/Publisher.cpp b/cpp/demo/IceStorm/clock/Publisher.cpp index 7ac4258f88d..36fbf10b0f6 100644 --- a/cpp/demo/IceStorm/clock/Publisher.cpp +++ b/cpp/demo/IceStorm/clock/Publisher.cpp @@ -33,27 +33,21 @@ main(int argc, char* argv[]) void usage(const string& n) { - cerr << "Usage: " << n << " [--datagram|--twoway|--oneway] [topic]\n" << endl; + cerr << "Usage: " << n << " [--datagram|--twoway|--oneway] [topic]" << endl; } int Publisher::run(int argc, char* argv[]) { - enum Option { Datagram, Twoway, Oneway }; - Option option = Oneway; - + enum Option { None, Datagram, Twoway, Oneway }; + Option option = None; string topicName = "time"; + int i; - if(argc > 3) - { - cerr << appName() << ": too many arguments" << endl; - usage(appName()); - return EXIT_FAILURE; - } - - if(argc >= 2) + for(i = 1; i < argc; ++i) { - string optionString = argv[1]; + string optionString = argv[i]; + Option oldoption = option; if(optionString == "--datagram") { option = Datagram; @@ -66,35 +60,32 @@ Publisher::run(int argc, char* argv[]) { option = Oneway; } - else if(argc == 3) + else if(optionString.substr(0, 2) == "--") { - cerr << appName() << ": too many arguments" << endl; - usage(appName()); + usage(argv[0]); return EXIT_FAILURE; } else { - topicName = optionString; - } - - if(argc == 3) - { - topicName = argv[2]; + topicName = argv[i++]; + break; } - if(topicName[0] == '-') + if(oldoption != option && oldoption != None) { - cerr << appName() << ": invalid topic name" << endl; - usage(appName()); + usage(argv[0]); return EXIT_FAILURE; } } - - + if(i != argc) + { + usage(argv[0]); + return EXIT_FAILURE; + } IceStorm::TopicManagerPrx manager = IceStorm::TopicManagerPrx::checkedCast( - communicator()->propertyToProxy("IceStorm.TopicManager.Proxy")); + communicator()->propertyToProxy("TopicManager.Proxy")); if(!manager) { cerr << appName() << ": invalid proxy" << endl; @@ -135,7 +126,7 @@ Publisher::run(int argc, char* argv[]) { // Do nothing. } - else if(option == Oneway) + else if(option == Oneway || option == None) { publisher = publisher->ice_oneway(); } |