diff options
author | Mark Spruiell <mes@zeroc.com> | 2003-03-27 21:57:31 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2003-03-27 21:57:31 +0000 |
commit | 88e0085253586777b27604bb057d9b495a3a5c09 (patch) | |
tree | 8d0f422a88c8859dfaebbff3deb0fa90b8f0742a /cpp/test/IceStorm/federation/Subscriber.cpp | |
parent | assert fix (diff) | |
download | ice-88e0085253586777b27604bb057d9b495a3a5c09.tar.bz2 ice-88e0085253586777b27604bb057d9b495a3a5c09.tar.xz ice-88e0085253586777b27604bb057d9b495a3a5c09.zip |
cleaning up topic subscription; adding publish endpoints
Diffstat (limited to 'cpp/test/IceStorm/federation/Subscriber.cpp')
-rw-r--r-- | cpp/test/IceStorm/federation/Subscriber.cpp | 72 |
1 files changed, 57 insertions, 15 deletions
diff --git a/cpp/test/IceStorm/federation/Subscriber.cpp b/cpp/test/IceStorm/federation/Subscriber.cpp index 96091c5ccaa..8535fccc373 100644 --- a/cpp/test/IceStorm/federation/Subscriber.cpp +++ b/cpp/test/IceStorm/federation/Subscriber.cpp @@ -73,6 +73,17 @@ deleteLock(const string& name) #endif } +void +usage(const char* appName) +{ + cerr << "Usage: " << appName << " [options] [lockfile]\n"; + cerr << + "Options:\n" + "-h, --help Show this message.\n" + "-b Use batch reliability.\n" + ; +} + int run(int argc, char* argv[], const CommunicatorPtr& communicator) { @@ -83,11 +94,39 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) stringSeqToArgs(args, argc, argv); string lockfile = "subscriber.lock"; + bool batch = false; - if(argc != 1) + int idx = 1; + while(idx < argc) { - lockfile = argv[1]; + if(strcmp(argv[idx], "-b") == 0) + { + batch = true; + + for(int i = idx ; i + 1 < argc ; ++i) + { + argv[i] = argv[i + 1]; + } + --argc; + } + else if(strcmp(argv[idx], "-h") == 0 || strcmp(argv[idx], "--help") == 0) + { + usage(argv[0]); + return EXIT_SUCCESS; + } + else if(argv[idx][0] == '-') + { + cerr << argv[0] << ": unknown option `" << argv[idx] << "'" << endl; + usage(argv[0]); + return EXIT_FAILURE; + } + else + { + lockfile = argv[idx]; + ++idx; + } } + createLock(lockfile); const char* managerProxyProperty = "IceStorm.TopicManager.Proxy"; @@ -114,17 +153,26 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) // // Activate the servants. // - ObjectPrx objFed1 = adapter->add(eventFed1, stringToIdentity("fed1/events")); - ObjectPrx objFed2 = adapter->add(eventFed2, stringToIdentity("fed2/events")); - ObjectPrx objFed3 = adapter->add(eventFed3, stringToIdentity("fed3/events")); + ObjectPrx objFed1 = adapter->addWithUUID(eventFed1); + ObjectPrx objFed2 = adapter->addWithUUID(eventFed2); + ObjectPrx objFed3 = adapter->addWithUUID(eventFed3); + + adapter->activate(); IceStorm::QoS qos; - //TODO: qos["reliability"] = "batch"; + if(batch) + { + qos["reliability"] = "batch"; + } try { - manager->subscribe(qos, objFed1); - manager->subscribe(qos, objFed2); - manager->subscribe(qos, objFed3); + TopicPrx topic; + topic = manager->retrieve("fed1"); + topic->subscribe(qos, objFed1); + topic = manager->retrieve("fed2"); + topic->subscribe(qos, objFed2); + topic = manager->retrieve("fed3"); + topic->subscribe(qos, objFed3); } catch(const IceStorm::NoSuchTopic& e) { @@ -132,14 +180,8 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator) return EXIT_FAILURE; } - adapter->activate(); - communicator->waitForShutdown(); -// cout << "eventFed1->count(): " << eventFed1->count() << endl; -// cout << "eventFed2->count(): " << eventFed2->count() << endl; -// cout << "eventFed3->count(): " << eventFed3->count() << endl; - test(eventFed1->count() == 30); test(eventFed2->count() == 40); test(eventFed3->count() == 30); |