Пример #1
0
        public void SingleTwister()
        {
            var queue = new DuplexQueueStream();

            using (var client = new MultiplexStream(queue))
                using (var server = new MultiplexStream(queue.Peer))
                    TestUtils.RunTwister(client.Connect(), server.Accept());
        }
Пример #2
0
        public static void Main(string[] args)
        {
            using (var fs1 = new FloatingStream())
                using (var fs2 = new FloatingStream())
                    using (var mux1 = new MultiplexStream(fs1, fs2))
                        using (var mux2 = new MultiplexStream(fs2, fs1))
                        {
                            var server = new ProxyHost(mux1, new ServiceCollection().BuildServiceProvider());

                            Task.Run(async() =>
                            {
                                var client = new ProxyHost(mux2, new ServiceCollection().BuildServiceProvider());

                                var valueProxy = new Proxy <Value>(new Value(12), ownsInstance: true);
                                var barProxy   = await client.CreateAsync <Bar>(cancellation: default);
Пример #3
0
        public void ParallelTwister()
        {
            TestUtils.SetupLogging();
            var queue = new DuplexQueueStream();

            using (var client = new MultiplexStream(queue))
                using (var server = new MultiplexStream(queue.Peer))
                {
                    for (int n = 1; n <= 10; ++n)
                    {
                        NLog.LogManager.GetCurrentClassLogger().Info("Running {0} parallel streams", n);
                        var jobs = Enumerable.Range(0, n).Select(nn =>
                        {
                            var subclient = client.Connect();
                            var subserver = server.Accept();
                            return(new Action(() => TestUtils.RunTwister(subclient, subserver, TimeSpan.FromSeconds(30))));
                        }).ToList();
                        Task.WhenAll(jobs.Select(job => Task.Run(job)).ToList()).Wait();
                    }
                }
        }