示例#1
0
 public override void nestedCall(int level, NestedPrx proxy, Ice.Current current)
 {
     System.Console.Out.WriteLine("" + level);
     if(--level > 0)
     {
         //
         // Ensure the invocation times out if the nesting level is too
         // high and there are no more threads in the thread pool to
         // dispatch the call.
         //
         ((NestedPrx)proxy.ice_invocationTimeout(5000)).nestedCall(level, _self);
     }
 }
示例#2
0
 public override void nestedCall(int level, NestedPrx proxy, Ice.Current current)
 {
     System.Console.Out.WriteLine("" + level);
     if (--level > 0)
     {
         //
         // Ensure the invocation times out if the nesting level is too
         // high and there are no more threads in the thread pool to
         // dispatch the call.
         //
         ((NestedPrx)proxy.ice_invocationTimeout(5000)).nestedCall(level, _self);
     }
 }
示例#3
0
        public override int run(string[] args)
        {
            if (args.Length > 0)
            {
                Console.Error.WriteLine(appName() + ": too many arguments");
                return(1);
            }

            NestedPrx nested = NestedPrxHelper.checkedCast(communicator().propertyToProxy("Nested.Proxy"));

            if (nested == null)
            {
                Console.Error.WriteLine("invalid proxy");
                return(1);
            }

            //
            // Ensure the invocation times out if the nesting level is too
            // high and there are no more threads in the thread pool to
            // dispatch the call.
            //
            nested = (NestedPrx)nested.ice_invocationTimeout(5000);

            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();

            Console.Out.WriteLine("Note: The maximum nesting level is sz * 2, with sz being");
            Console.Out.WriteLine("the maximum number of threads in the server thread pool. If");
            Console.Out.WriteLine("you specify a value higher than that, the application will");
            Console.Out.WriteLine("block or timeout.");
            Console.Out.WriteLine();

            string s = null;

            do
            {
                try
                {
                    Console.Out.Write("enter nesting level or 'x' for exit: ");
                    Console.Out.Flush();
                    s = Console.In.ReadLine();
                    if (s == null)
                    {
                        break;
                    }
                    int level = System.Int32.Parse(s);
                    if (level > 0)
                    {
                        nested.nestedCall(level, self);
                    }
                }
                catch (System.FormatException)
                {
                }
                catch (System.Exception ex)
                {
                    Console.Error.WriteLine(ex);
                }
            }while(!s.Equals("x"));

            return(0);
        }