summaryrefslogtreecommitdiff
path: root/java/demo/Glacier2/callback/CallbackClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/demo/Glacier2/callback/CallbackClient.java')
-rw-r--r--java/demo/Glacier2/callback/CallbackClient.java235
1 files changed, 235 insertions, 0 deletions
diff --git a/java/demo/Glacier2/callback/CallbackClient.java b/java/demo/Glacier2/callback/CallbackClient.java
new file mode 100644
index 00000000000..d693a121842
--- /dev/null
+++ b/java/demo/Glacier2/callback/CallbackClient.java
@@ -0,0 +1,235 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2004 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.*;
+
+class CallbackClient extends Ice.Application
+{
+ private static void
+ menu()
+ {
+ System.out.println(
+ "usage:\n" +
+ "t: send callback as twoway\n" +
+ "o: send callback as oneway\n" +
+ "O: send callback as batch oneway\n" +
+ "f: flush all batch requests\n" +
+ "v: set/reset override context field\n" +
+ "F: set/reset fake category\n" +
+ "s: shutdown server\n" +
+ "x: exit\n" +
+ "?: help\n");
+ }
+
+ public int
+ run(String[] args)
+ {
+ Ice.RouterPrx defaultRouter = communicator().getDefaultRouter();
+ if(defaultRouter == null)
+ {
+ System.err.println("no default router set");
+ return 1;
+ }
+
+ Glacier2.RouterPrx router = Glacier2.RouterPrxHelper.checkedCast(defaultRouter);
+ if(router == null)
+ {
+ System.err.println("configured router is not a Glacier2 router");
+ return 1;
+ }
+
+ java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
+ while(true)
+ {
+ System.out.println("This demo accepts any user-id / password combination.");
+
+ try
+ {
+ String id;
+ System.out.print("user id: ");
+ System.out.flush();
+ id = in.readLine();
+
+ String pw;
+ System.out.print("password: ");
+ System.out.flush();
+ pw = in.readLine();
+
+ try
+ {
+ router.createSession(id, pw);
+ break;
+ }
+ catch(Glacier2.PermissionDeniedException ex)
+ {
+ System.out.println("permission denied:\n" + ex.reason);
+ }
+ catch(Glacier2.CannotCreateSessionException ex)
+ {
+ System.out.println("cannot create session:\n" + ex.reason);
+ }
+ }
+ catch(java.io.IOException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch(Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ String category = router.getServerProxy().ice_getIdentity().category;
+ Ice.Identity callbackReceiverIdent = new Ice.Identity();
+ callbackReceiverIdent.name = "callbackReceiver";
+ callbackReceiverIdent.category = category;
+ Ice.Identity callbackReceiverFakeIdent = new Ice.Identity();
+ callbackReceiverFakeIdent.name = "callbackReceiver";
+ callbackReceiverFakeIdent.category = "fake";
+
+ Ice.Properties properties = communicator().getProperties();
+ final String proxyProperty = "Callback.Proxy";
+ String proxy = properties.getProperty(proxyProperty);
+ if(proxy.length() == 0)
+ {
+ System.err.println("property `" + proxyProperty + "' not set");
+ return 1;
+ }
+
+ Ice.ObjectPrx base = communicator().stringToProxy(proxy);
+ CallbackPrx twoway = CallbackPrxHelper.checkedCast(base);
+ CallbackPrx oneway = CallbackPrxHelper.uncheckedCast(twoway.ice_oneway());
+ CallbackPrx batchOneway = CallbackPrxHelper.uncheckedCast(twoway.ice_batchOneway());
+
+ Ice.ObjectAdapter adapter = communicator().createObjectAdapter("Callback.Client");
+ adapter.add(new CallbackReceiverI(), callbackReceiverIdent);
+ adapter.add(new CallbackReceiverI(), callbackReceiverFakeIdent);
+ adapter.activate();
+
+ CallbackReceiverPrx twowayR = CallbackReceiverPrxHelper.uncheckedCast(
+ adapter.createProxy(callbackReceiverIdent));
+ CallbackReceiverPrx onewayR = CallbackReceiverPrxHelper.uncheckedCast(twowayR.ice_oneway());
+
+ menu();
+
+ String line = null;
+ String override = null;
+ boolean fake = false;
+ do
+ {
+ try
+ {
+ System.out.print("==> ");
+ System.out.flush();
+ line = in.readLine();
+ if(line == null)
+ {
+ break;
+ }
+ if(line.equals("t"))
+ {
+ java.util.Map context = new java.util.HashMap();
+ context.put("_fwd", "t");
+ if(override != null)
+ {
+ context.put("_ovrd", override);
+ }
+ twoway.initiateCallback(twowayR, context);
+ }
+ else if(line.equals("o"))
+ {
+ java.util.Map context = new java.util.HashMap();
+ context.put("_fwd", "o");
+ if(override != null)
+ {
+ context.put("_ovrd", override);
+ }
+ oneway.initiateCallback(onewayR, context);
+ }
+ else if(line.equals("O"))
+ {
+ java.util.Map context = new java.util.HashMap();
+ context.put("_fwd", "O");
+ if(override != null)
+ {
+ context.put("_ovrd", override);
+ }
+ batchOneway.initiateCallback(onewayR);
+ }
+ else if(line.equals("f"))
+ {
+ communicator().flushBatchRequests();
+ }
+ else if(line.equals("v"))
+ {
+ if(override == null)
+ {
+ override = "some_value";
+ System.out.println("override context field is now `" + override + "'");
+ }
+ else
+ {
+ override = null;
+ System.out.println("override context field is empty");
+ }
+ }
+ else if(line.equals("F"))
+ {
+ fake = !fake;
+
+ if(fake)
+ {
+ twowayR = CallbackReceiverPrxHelper.uncheckedCast(
+ twowayR.ice_newIdentity(callbackReceiverFakeIdent));
+ onewayR = CallbackReceiverPrxHelper.uncheckedCast(
+ onewayR.ice_newIdentity(callbackReceiverFakeIdent));
+ }
+ else
+ {
+ twowayR = CallbackReceiverPrxHelper.uncheckedCast(
+ twowayR.ice_newIdentity(callbackReceiverIdent));
+ onewayR = CallbackReceiverPrxHelper.uncheckedCast(
+ onewayR.ice_newIdentity(callbackReceiverIdent));
+ }
+
+ System.out.println("callback receiver identity: " +
+ Ice.Util.identityToString(twowayR.ice_getIdentity()));
+ }
+ else if(line.equals("s"))
+ {
+ twoway.shutdown();
+ }
+ else if(line.equals("x"))
+ {
+ // Nothing to do
+ }
+ else if(line.equals("?"))
+ {
+ menu();
+ }
+ else
+ {
+ System.out.println("unknown command `" + line + "'");
+ menu();
+ }
+ }
+ catch(java.io.IOException ex)
+ {
+ ex.printStackTrace();
+ }
+ catch(Ice.LocalException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ while(!line.equals("x"));
+
+ return 0;
+ }
+}