diff options
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(); } |