Esempio n. 1
0
        async static Task Client()
        {
            using (var channel = new FastIpc(PIPE_NAME, false, null))
            {
                Proxy <Foo> fooProxy = await channel.Activate <Foo>();

                int remoteProcessID = await fooProxy.Eval(foo => foo.ProcessID);

                Console.WriteLine($"Remote process ID: {remoteProcessID}");

                int sum = await fooProxy.Eval(f1 => f1.Add(2, 2));

                Console.WriteLine($"Sum: {sum}");

                int sum2 = await fooProxy.Eval(f1 => f1.AddAsync(3, 3));

                Console.WriteLine($"Async Sum: {sum2}");

                #region Automatic Marshaling Demonstration

                Proxy <Bar> barProxy = await channel.Activate <Bar>();

                Proxy <Foo> fooProxy2 = await barProxy.Eval(b => b.GetFoo());

                int sum3 = await fooProxy2.Eval(f2 => f2.Add(4, 4));

                Console.WriteLine($"Sum from foo proxy #2: {sum3}");

                await barProxy.Run(b => b.PrintFoo(fooProxy2));

                await barProxy.Run(b => b.PrintFoo(new Foo()));

                #endregion
            }
        }
Esempio n. 2
0
 static void Main(string[] args)
 {
     if (args.Length > 0)
     {
         if (args[0].Equals(CLIENT, StringComparison.InvariantCultureIgnoreCase))
         {
             StartClient();
         }
         else if (args[0].Equals("server", StringComparison.InvariantCultureIgnoreCase))
         {
             Console.WriteLine($"Server process ID: {Process.GetCurrentProcess().Id}\n");
             using (FastIpc server = new FastIpc(PIPE_NAME, true, null))
             {
                 bool runInSeparateProcess = true;
                 if (runInSeparateProcess)
                 {
                     string library = Assembly.GetExecutingAssembly().Location;
                     Process.Start("dotnet", $"{library} {CLIENT}");
                 }
                 else
                 {
                     StartClient();
                 }
                 Console.ReadKey();
             }
         }
         return;
     }
     Console.WriteLine("Incorrect usage, must specify <client|server> as command line argument.");
 }