diff options
author | Matthew Newhook <matthew@zeroc.com> | 2007-02-01 05:39:03 +0000 |
---|---|---|
committer | Matthew Newhook <matthew@zeroc.com> | 2007-02-01 05:39:03 +0000 |
commit | 0dfa893559f61d42b77eb99487aa0841313d83c3 (patch) | |
tree | 300db397cbe09672ca0c2875957535a24161885e /java/demo/IceStorm/clock/Subscriber.java | |
parent | *** empty log message *** (diff) | |
download | ice-0dfa893559f61d42b77eb99487aa0841313d83c3.tar.bz2 ice-0dfa893559f61d42b77eb99487aa0841313d83c3.tar.xz ice-0dfa893559f61d42b77eb99487aa0841313d83c3.zip |
http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=1711
Diffstat (limited to 'java/demo/IceStorm/clock/Subscriber.java')
-rw-r--r-- | java/demo/IceStorm/clock/Subscriber.java | 131 |
1 files changed, 112 insertions, 19 deletions
diff --git a/java/demo/IceStorm/clock/Subscriber.java b/java/demo/IceStorm/clock/Subscriber.java index ef9e37317e5..01f4887d72c 100644 --- a/java/demo/IceStorm/clock/Subscriber.java +++ b/java/demo/IceStorm/clock/Subscriber.java @@ -19,6 +19,12 @@ public class Subscriber extends Ice.Application System.out.println(date); } } + + public void + usage() + { + System.out.println("Usage: " + appName() + " [--batch] [--datagram|--twoway|--ordered|--oneway] [topic]"); + } public int run(String[] args) @@ -32,14 +38,65 @@ public class Subscriber extends Ice.Application } String topicName = "time"; - if(args.length != 0) - { - topicName = args[0]; - } + boolean datagram = false; + boolean twoway = false; + boolean ordered = false; + boolean oneway = false; + boolean batch = false; + int optsSet = 0; + for(int i = 0; i < args.length; ++i) + { + if(args[i].equals("--datagram")) + { + datagram = true; + ++optsSet; + } + else if(args[i].equals("--twoway")) + { + twoway = true; + ++optsSet; + } + else if(args[i].equals("--ordered")) + { + ordered = true; + ++optsSet; + } + else if(args[i].equals("--oneway")) + { + oneway = true; + ++optsSet; + } + else if(args[i].equals("--batch")) + { + batch = true; + } + else if(args[i].startsWith("--")) + { + usage(); + return 1; + } + else + { + topicName = args[i]; + break; + } + } + + if(batch) + { + if(twoway || ordered) + { + System.err.println(appName() + ": batch can only be set with oneway or datagram"); + return 1; + } + } + + if(optsSet != 1) + { + usage(); + return 1; + } - // - // Retrieve the topic named "time". - // IceStorm.TopicPrx topic; try { @@ -53,7 +110,7 @@ public class Subscriber extends Ice.Application } catch(IceStorm.TopicExists ex) { - System.err.println("temporary failure, try again."); + System.err.println(appName() + ": temporary failure, try again."); return 1; } } @@ -63,23 +120,59 @@ public class Subscriber extends Ice.Application // // Add a Servant for the Ice Object. // - Ice.ObjectPrx subscriber = adapter.addWithUUID(new ClockI()); - - // - // This demo requires no quality of service, so it will use - // the defaults. - // java.util.Map qos = new java.util.HashMap(); - - topic.subscribe(qos, subscriber); + Ice.ObjectPrx subscriber = adapter.addWithUUID(new ClockI()); + // + // Set up the proxy. + // + if(datagram) + { + subscriber = subscriber.ice_datagram(); + } + else if(twoway) + { + // Do nothing to the subscriber proxy. Its already twoway. + } + else if(ordered) + { + // Do nothing to the subscriber proxy. Its already twoway. + qos.put("reliability", "ordered"); + } + else // if(oneway) + { + subscriber = subscriber.ice_oneway(); + } + if(batch) + { + if(datagram) + { + subscriber = subscriber.ice_batchDatagram(); + } + else + { + subscriber = subscriber.ice_batchOneway(); + } + } + + try + { + topic.subscribeAndGetPublisher(qos, subscriber); + } + catch(IceStorm.AlreadySubscribed e) + { + e.printStackTrace(); + return 1; + } + catch(IceStorm.BadQoS e) + { + e.printStackTrace(); + return 1; + } adapter.activate(); shutdownOnInterrupt(); communicator().waitForShutdown(); - // - // Unsubscribe all subscribed objects. - // topic.unsubscribe(subscriber); return 0; |