summaryrefslogtreecommitdiff
path: root/java/demo/Ice/nested/Client.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/demo/Ice/nested/Client.java')
-rw-r--r--java/demo/Ice/nested/Client.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/java/demo/Ice/nested/Client.java b/java/demo/Ice/nested/Client.java
new file mode 100644
index 00000000000..eca38311300
--- /dev/null
+++ b/java/demo/Ice/nested/Client.java
@@ -0,0 +1,115 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+
+import Demo.*;
+
+public class Client extends Ice.Application
+{
+ class ShutdownHook extends Thread
+ {
+ public void
+ run()
+ {
+ /*
+ * For this demo we won't destroy the communicator since it has to
+ * wait for any outstanding invocations to complete which may take
+ * some time if the nesting level is exceeded.
+ *
+ try
+ {
+ communicator().destroy();
+ }
+ catch(Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ }
+ */
+ }
+ }
+
+ public int
+ run(String[] args)
+ {
+ if(args.length > 0)
+ {
+ System.err.println(appName() + ": too many arguments");
+ return 1;
+ }
+
+ //
+ // Since this is an interactive demo we want to clear the
+ // Application installed interrupt callback and install our
+ // own shutdown hook.
+ //
+ setInterruptHook(new ShutdownHook());
+
+ NestedPrx nested = NestedPrxHelper.checkedCast(communicator().propertyToProxy("Nested.Proxy"));
+ if(nested == null)
+ {
+ System.err.println("invalid proxy");
+ return 1;
+ }
+
+ Ice.ObjectAdapter adapter = communicator().createObjectAdapter("Nested.Client");
+ NestedPrx self =
+ NestedPrxHelper.uncheckedCast(adapter.createProxy(communicator().stringToIdentity("nestedClient")));
+ adapter.add(new NestedI(self), communicator().stringToIdentity("nestedClient"));
+ adapter.activate();
+
+ System.out.println("Note: The maximum nesting level is sz * 2, with sz being");
+ System.out.println("the maximum number of threads in the server thread pool. If");
+ System.out.println("you specify a value higher than that, the application will");
+ System.out.println("block or timeout.");
+ System.out.println();
+
+ java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
+
+ String s = null;
+ do
+ {
+ try
+ {
+ System.out.print("enter nesting level or 'x' for exit: ");
+ System.out.flush();
+ s = in.readLine();
+ if(s == null)
+ {
+ break;
+ }
+ int level = Integer.parseInt(s);
+ if(level > 0)
+ {
+ nested.nestedCall(level, self);
+ }
+ }
+ catch(NumberFormatException ex)
+ {
+ }
+ catch(java.io.IOException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch(Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ while(!s.equals("x"));
+
+ return 0;
+ }
+
+ public static void
+ main(String[] args)
+ {
+ Client app = new Client();
+ int status = app.main("Client", args, "config.client");
+ System.exit(status);
+ }
+}