summaryrefslogtreecommitdiff
path: root/cs/demo/Glacier2/callback/Client.cs
diff options
context:
space:
mode:
Diffstat (limited to 'cs/demo/Glacier2/callback/Client.cs')
-rw-r--r--cs/demo/Glacier2/callback/Client.cs219
1 files changed, 217 insertions, 2 deletions
diff --git a/cs/demo/Glacier2/callback/Client.cs b/cs/demo/Glacier2/callback/Client.cs
index a161937c7d0..a9772e94107 100644
--- a/cs/demo/Glacier2/callback/Client.cs
+++ b/cs/demo/Glacier2/callback/Client.cs
@@ -7,11 +7,226 @@
//
// **********************************************************************
-public class Client
+using Demo;
+using System;
+using System.Collections;
+
+public class Client : Ice.Application
{
+ private static void menu()
+ {
+ Console.WriteLine(
+ "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 override int run(string[] args)
+ {
+ Ice.RouterPrx defaultRouter = communicator().getDefaultRouter();
+ if(defaultRouter == null)
+ {
+ Console.Error.WriteLine("no default router set");
+ return 1;
+ }
+
+ Glacier2.RouterPrx router = Glacier2.RouterPrxHelper.checkedCast(defaultRouter);
+ if(router == null)
+ {
+ Console.Error.WriteLine("configured router is not a Glacier2 router");
+ return 1;
+ }
+
+ while(true)
+ {
+ Console.WriteLine("This demo accepts any user-id / password combination.");
+
+ try
+ {
+ String id;
+ Console.Write("user id: ");
+ Console.Out.Flush();
+ id = Console.In.ReadLine();
+
+ String pw;
+ Console.Write("password: ");
+ Console.Out.Flush();
+ pw = Console.In.ReadLine();
+
+ try
+ {
+ router.createSession(id, pw);
+ break;
+ }
+ catch(Glacier2.PermissionDeniedException ex)
+ {
+ Console.Write("permission denied:\n" + ex.reason);
+ }
+ catch(Glacier2.CannotCreateSessionException ex)
+ {
+ Console.Write("cannot create session:\n" + ex.reason);
+ }
+ }
+ catch(System.Exception ex)
+ {
+ Console.Error.WriteLine(ex);
+ }
+ }
+
+ 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();
+ const string proxyProperty = "Callback.Proxy";
+ String proxy = properties.getProperty(proxyProperty);
+ if(proxy.Length == 0)
+ {
+ Console.Error.WriteLine("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;
+ bool fake = false;
+ do
+ {
+ try
+ {
+ Console.Write("==> ");
+ Console.Out.Flush();
+ line = Console.In.ReadLine();
+ if(line == null)
+ {
+ break;
+ }
+ if(line.Equals("t"))
+ {
+ Ice.Context context = new Ice.Context();
+ context["_fwd"] = "t";
+ if(@override != null)
+ {
+ context["_ovrd"] = @override;
+ }
+ twoway.initiateCallback(twowayR, context);
+ }
+ else if(line.Equals("o"))
+ {
+ Ice.Context context = new Ice.Context();
+ context["_fwd"] = "o";
+ if(@override != null)
+ {
+ context["_ovrd"] = @override;
+ }
+ oneway.initiateCallback(onewayR, context);
+ }
+ else if(line.Equals("O"))
+ {
+ Ice.Context context = new Ice.Context();
+ context["_fwd"] = "O";
+ if(@override != null)
+ {
+ context["_ovrd"] = @override;
+ }
+ batchOneway.initiateCallback(onewayR, context);
+ }
+ else if(line.Equals("f"))
+ {
+ communicator().flushBatchRequests();
+ }
+ else if(line.Equals("v"))
+ {
+ if(@override == null)
+ {
+ @override = "some_value";
+ Console.WriteLine("override context field is now `" + @override + "'");
+ }
+ else
+ {
+ @override = null;
+ Console.WriteLine("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));
+ }
+
+ Console.WriteLine("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
+ {
+ Console.WriteLine("unknown command `" + line + "'");
+ menu();
+ }
+ }
+ catch(System.Exception ex)
+ {
+ Console.Error.WriteLine(ex);
+ }
+ }
+ while(!line.Equals("x"));
+
+ return 0;
+ }
+
public static void Main(string[] args)
{
- CallbackClient app = new CallbackClient();
+ Client app = new Client();
int status = app.main(args, "config");
System.Environment.Exit(status);
}