예제 #1
0
        public void TestDispatching()
        {
            string pipeName = "Vkm.TestPipe4";

            Test3.Counter = 0;
            IntercomMasterDispatcher <Test3, Test2> masterDispatcher = new IntercomMasterDispatcher <Test3, Test2>(pipeName, () => new Test3());

            var callback         = new Test2();
            var connectedClient1 = IntercomSlaveDispatcher <Test3, Test2> .CreateSlaveChannel(callback, pipeName);

            Assert.AreEqual(1, Test3.Counter);
            var connectedClient2 = IntercomSlaveDispatcher <Test3, Test2> .CreateSlaveChannel(callback, pipeName);

            Assert.AreEqual(2, Test3.Counter);

            Assert.AreEqual(0, connectedClient1.Execute(nameof(Test3.GetInstanceIndex)));
            Assert.AreEqual(1, connectedClient2.Execute(nameof(Test3.GetInstanceIndex)));

            connectedClient1.Dispose();
            Thread.Sleep(500);
            Assert.AreEqual(1, Test3.Counter);

            masterDispatcher.Dispose();
            Assert.AreEqual(0, Test3.Counter);
        }
예제 #2
0
        public void TestOneWay()
        {
            string pipeName = "Vkm.TestPipe5";

            IntercomMasterDispatcher <Test4, Test2> masterDispatcher = new IntercomMasterDispatcher <Test4, Test2>(pipeName, () => new Test4());

            var callback        = new Test2();
            var connectedClient = IntercomSlaveDispatcher <Test4, Test2> .CreateSlaveChannel(callback, pipeName);

            Assert.AreEqual(false, Test4.Success);
            connectedClient.Execute(nameof(Test4.LongMethod));
            Assert.AreEqual(false, Test4.Success);
            Thread.Sleep(1100);
            Assert.AreEqual(true, Test4.Success);
        }
예제 #3
0
 public static VkmIntercomClient Create(IVkmRemoteCallback callback)
 {
     return(new VkmIntercomClient(IntercomSlaveDispatcher <IVkmRemoteService, IVkmRemoteCallback> .CreateSlaveChannel(callback, Constants.DispatcherName)));
 }
예제 #4
0
 public static async Task <VkmIntercomClient> CreateAsync(IVkmRemoteCallback callback)
 {
     return(new VkmIntercomClient(await IntercomSlaveDispatcher <IVkmRemoteService, IVkmRemoteCallback> .CreateSlaveChannelAsync(callback, Constants.DispatcherName)));
 }