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