Exemple #1
0
        public async Task Send_MultipleMediators_DoesNotThrow()
        {
            clientPool.Dispose();
            serverPool.Dispose();
            cts.Cancel();
            cts.Dispose();
            await serverTask;

            cts        = new CancellationTokenSource();
            clientPool = new MediatorClientPool("testpool", poolSize);
            serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize);
            serverTask = Task.Run(serverPool.Run, cts.Token);

            await clientPool.Send(new VoidRequest());

            serverPool.Dispose();
            clientPool.Dispose();
            cts.Cancel();
            cts.Dispose();
            await serverTask;

            cts        = new CancellationTokenSource();
            clientPool = new MediatorClientPool("testpool", poolSize);
            serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize);
            serverTask = Task.Run(serverPool.Run, cts.Token);
            AsyncTestDelegate task = () => clientPool.Send(new VoidRequest());

            Assert.DoesNotThrowAsync(task);
        }
Exemple #2
0
        public async Task RunClient(string identifier)
        {
            Console.WriteLine("Starting client..");
            Console.WriteLine($"Pool name: {identifier}");

            ISender clientPool = new MediatorClientPool(poolName: identifier, poolSize: 4);

            Console.WriteLine($"Sending {nameof(ApplicationStateQuery)} from client to server..");
            var serverProcessInfo = await clientPool.Send(new ApplicationStateQuery());

            Console.WriteLine($"Response received:");
            Console.WriteLine(serverProcessInfo);

            var pid = Process.GetCurrentProcess().Id;

            while (true)
            {
                Console.Write("Send message: ");
                var message = Console.ReadLine();
                Console.WriteLine("Sending message..");
                var response = await clientPool.Send(new IPCMessageCommand { PID = pid, Message = message });

                Console.WriteLine($"Got response: {response}");
            }
        }
Exemple #3
0
        public void Setup()
        {
            cts    = new CancellationTokenSource();
            Sender = new Mock <ISender>();

            this.SetupRequest <VoidRequest, Unit>(Unit.Value);
            this.SetupRequest <RequestWithResponse, Response>((a, _) => new Response {
                A = a.A, B = a.B, C = a.C
            });
            this.SetupRequest <SlowRequest, Response>(async() =>
            {
                await Task.Delay(500);
                return(new Response());
            });
            this.SetupRequest <HugeRequest, byte[]>((req, _) => (byte[])req.Data.Clone());

            Sender.Setup(s => s.Send(It.IsAny <IRequest>(), It.Is <CancellationToken>(t => t.IsCancellationRequested)))
            .ThrowsAsync(new TaskCanceledException());

            clientPool = new MediatorClientPool("testpool", poolSize);
            serverPool = new MediatorServerPool(Sender.Object, "testpool", poolSize);
            serverTask = serverPool.Run();
        }