示例#1
0
        public override void SetUp()
        {
            base.SetUp();

            var identities = new Identities(IdKind.Server);

            var serverDispatcher = CreateScheduler(true);
            var clientDispatcher = CreateScheduler(false);
            var serverR          = "Server (R#)";

            ServerProtocol = new Protocol(serverR, CreateSerializers(true), identities, serverDispatcher, new TestWire(serverDispatcher, serverR, true), LifetimeDefinition.Lifetime);
            var clientIdea = "Client (IDEA)";

            ClientProtocol = new Protocol(clientIdea, CreateSerializers(false), identities, clientDispatcher, new TestWire(clientDispatcher, clientIdea, false), LifetimeDefinition.Lifetime);

            ServerWire = (ServerProtocol.Wire as TestWire).NotNull();
            ClientWire = (ClientProtocol.Wire as TestWire).NotNull();

            ServerWire.Connection = ClientWire;
            ClientWire.Connection = ServerWire;
        }
示例#2
0
        public void TestEarlyDelivery(bool heavy)
        {
            var key = heavy ? TestKeyHeavy.Instance : (RdContext <string>)TestKeyLight.Instance;

            var identities = new Identities(IdKind.Server);

            var serverDispatcher = CreateScheduler();
            var clientDispatcher = CreateScheduler();
            var serverR          = "Server (R#)";

            myServerProtocol = new Protocol(serverR, CreateSerializers(), identities, serverDispatcher, new TestWire(serverDispatcher, serverR, true), LifetimeDefinition.Lifetime, key);
            myServerWire     = (myServerProtocol.Wire as TestWire).NotNull();

            var clientIdea = "Client (IDEA)";
            var clientWire = new TestWire(clientDispatcher, clientIdea, false);

            myClientWire            = clientWire;
            myClientWire.Connection = myServerWire;
            myServerWire.Connection = myClientWire;

            myClientProtocol = new Protocol(clientIdea, CreateSerializers(), identities, clientDispatcher, clientWire, LifetimeDefinition.Lifetime, key);

            myServerWire.AutoTransmitMode = true;
            myClientWire.AutoTransmitMode = true;

            var serverSignal = BindToServer(LifetimeDefinition.Lifetime, new RdSignal <string>(), 1);

            key.Value = "1";

            serverSignal.Fire("");

            var clientSignal = BindToClient(LifetimeDefinition.Lifetime, new RdSignal <string>(), 1);

            Lifetime.Using(lt =>
            {
                var fired = false;
                clientSignal.Advise(lt, s =>
                {
                    Assert.AreEqual("1", key.Value);
                    fired = true;
                });
                serverSignal.Fire("");
                Assert.True(fired, "fired");
            });

            Assert.AreEqual("1", key.Value);

            Lifetime.Using(lt =>
            {
                var fired = false;
                serverSignal.Advise(lt, s =>
                {
                    Assert.AreEqual("1", key.Value);
                    fired = true;
                });
                clientSignal.Fire("");
                Assert.True(fired, "fired");
            });

            Assert.AreEqual("1", key.Value);
        }