void Worker4504OutputChannel_ConnectionOpened(object sender, DuplexChannelEventArgs e) { Log("Worker 4504 connected"); Log("ChannelId : " + e.ChannelId); Log("ResponseReceiverId : " + e.ResponseReceiverId); Log("SenderAddress : " + e.SenderAddress); //send to server connection id CommandMessageSender.SendMessage("ResponseReceiverId|Open|" + e.ResponseReceiverId + "|"); }
private void Download1MB(object sender, RoutedEventArgs e) { int multiplier = 1; // fragmented _repeat = 1; _bytesLength = 1048576 * multiplier; // non fragmented //repeat = 730*multiplier; //bytesLength = 1440; //UI related DisableAllButton(); MiscUIStart("Downloading " + multiplier + " megabytes of data."); if (Command_Initialize()) { if (Worker4504_Initialize()) { Command_MessageSender.SendMessage("1|send|" + Worker4504_OutputChannel.ResponseReceiverId + "|" + _bytesLength + "|" + _repeat); //344ms 1 repeat } } }
public void WrapUnwrapMessage() { // Wrapped/unwrapped channels string aChannel1Id = "Channel1Id"; string aChannel2Id = "Channel2Id"; IDuplexStringMessagesFactory aStringMessagesFactory = new DuplexStringMessagesFactory(); IDuplexStringMessageReceiver aStringMessageReceiver1 = aStringMessagesFactory.CreateDuplexStringMessageReceiver(); IDuplexStringMessageReceiver aStringMessageReceiver2 = aStringMessagesFactory.CreateDuplexStringMessageReceiver(); IDuplexStringMessageSender aStringMessageSender1 = aStringMessagesFactory.CreateDuplexStringMessageSender(); IDuplexStringMessageSender aStringMessageSender2 = aStringMessagesFactory.CreateDuplexStringMessageSender(); // Attach input channels to string receivers. aStringMessageReceiver1.AttachDuplexInputChannel(myMessagingForUnwrapper.CreateDuplexInputChannel(aChannel1Id)); aStringMessageReceiver2.AttachDuplexInputChannel(myMessagingForUnwrapper.CreateDuplexInputChannel(aChannel2Id)); // Connect string senders with the channel wrapper. myDuplexChannelWrapper.AttachDuplexInputChannel(myMessagingForWrapper.CreateDuplexInputChannel(aChannel1Id)); myDuplexChannelWrapper.AttachDuplexInputChannel(myMessagingForWrapper.CreateDuplexInputChannel(aChannel2Id)); aStringMessageSender1.AttachDuplexOutputChannel(myMessagingForWrapper.CreateDuplexOutputChannel(aChannel1Id)); aStringMessageSender2.AttachDuplexOutputChannel(myMessagingForWrapper.CreateDuplexOutputChannel(aChannel2Id)); // Connect wrapper and unwrapper to global channels. myDuplexChannelUnwrapper.AttachDuplexInputChannel(myDuplexGlobalInputChannel); myDuplexChannelWrapper.AttachDuplexOutputChannel(myDuplexGlobalOutputChannel); StringRequestReceivedEventArgs aReceivedMessage1 = null; aStringMessageReceiver1.RequestReceived += (x, y) => { aReceivedMessage1 = y; aStringMessageReceiver1.SendResponseMessage(y.ResponseReceiverId, "Response1"); }; StringRequestReceivedEventArgs aReceivedMessage2 = null; aStringMessageReceiver2.RequestReceived += (x, y) => { aReceivedMessage2 = y; aStringMessageReceiver2.SendResponseMessage(y.ResponseReceiverId, "Response2"); }; StringResponseReceivedEventArgs aReceivedResponse1 = null; aStringMessageSender1.ResponseReceived += (x, y) => { aReceivedResponse1 = y; }; StringResponseReceivedEventArgs aReceivedResponse2 = null; aStringMessageSender2.ResponseReceived += (x, y) => { aReceivedResponse2 = y; }; aStringMessageSender1.SendMessage("Message1"); Assert.AreEqual("Message1", aReceivedMessage1.RequestMessage, "Message receiver 1 received incorrect message."); Assert.AreEqual("Response1", aReceivedResponse1.ResponseMessage, "Response receiver 1 received incorrect message."); Assert.IsNull(aReceivedMessage2, "Message receiver 2 should not receive a message."); Assert.IsNull(aReceivedResponse2, "Response receiver 2 should not receive a message."); string anAssociatedResponseReceiverId = myDuplexChannelUnwrapper.GetAssociatedResponseReceiverId(aReceivedMessage1.ResponseReceiverId); Assert.AreEqual(myDuplexChannelWrapper.AttachedDuplexOutputChannel.ResponseReceiverId, anAssociatedResponseReceiverId); aReceivedMessage1 = null; aReceivedResponse1 = null; aStringMessageSender2.SendMessage("Message2"); Assert.AreEqual("Message2", aReceivedMessage2.RequestMessage, "Message receiver 2 received incorrect message."); Assert.AreEqual("Response2", aReceivedResponse2.ResponseMessage, "Response receiver 2 received incorrect message."); Assert.IsNull(aReceivedMessage1, "Message receiver 1 should not receive a message."); Assert.IsNull(aReceivedResponse1, "Response receiver 1 should not receive a message."); }
//[Test] public void AssociatedResponseReceiverId() { // Wrapped/unwrapped channels string aChannel1Id = "Channel1Id"; string aChannel2Id = "Channel2Id"; IDuplexStringMessagesFactory aStringMessagesFactory = new DuplexStringMessagesFactory(); IDuplexStringMessageReceiver aStringMessageReceiver1 = aStringMessagesFactory.CreateDuplexStringMessageReceiver(); IDuplexStringMessageReceiver aStringMessageReceiver2 = aStringMessagesFactory.CreateDuplexStringMessageReceiver(); IDuplexStringMessageSender aStringMessageSender1 = aStringMessagesFactory.CreateDuplexStringMessageSender(); IDuplexStringMessageSender aStringMessageSender2 = aStringMessagesFactory.CreateDuplexStringMessageSender(); // Attach input channels to string receivers. aStringMessageReceiver1.AttachDuplexInputChannel(myMessagingForUnwrapper.CreateDuplexInputChannel(aChannel1Id)); aStringMessageReceiver2.AttachDuplexInputChannel(myMessagingForUnwrapper.CreateDuplexInputChannel(aChannel2Id)); // Connect string senders with the channel wrapper. myDuplexChannelWrapper.AttachDuplexInputChannel(myMessagingForWrapper.CreateDuplexInputChannel(aChannel1Id)); myDuplexChannelWrapper.AttachDuplexInputChannel(myMessagingForWrapper.CreateDuplexInputChannel(aChannel2Id)); aStringMessageSender1.AttachDuplexOutputChannel(myMessagingForWrapper.CreateDuplexOutputChannel(aChannel1Id)); aStringMessageSender2.AttachDuplexOutputChannel(myMessagingForWrapper.CreateDuplexOutputChannel(aChannel2Id)); try { // Connect wrapper and unwrapper to global channels. myDuplexChannelUnwrapper.AttachDuplexInputChannel(myDuplexGlobalInputChannel); myDuplexChannelWrapper.AttachDuplexOutputChannel(myDuplexGlobalOutputChannel); StringRequestReceivedEventArgs aReceivedMessage1 = null; aStringMessageReceiver1.RequestReceived += (x, y) => { aReceivedMessage1 = y; }; bool aResponseReceiverChannel1Disconnected = false; aStringMessageReceiver1.ResponseReceiverDisconnected += (x, y) => { aResponseReceiverChannel1Disconnected = true; }; StringRequestReceivedEventArgs aReceivedMessage2 = null; aStringMessageReceiver2.RequestReceived += (x, y) => { aReceivedMessage2 = y; }; bool aResponseReceiverChannel2Disconnected = false; aStringMessageReceiver2.ResponseReceiverDisconnected += (x, y) => { aResponseReceiverChannel2Disconnected = true; }; aStringMessageSender1.SendMessage("Message1"); aStringMessageSender2.SendMessage("Message2"); string anAssociatedId1 = myDuplexChannelUnwrapper.GetAssociatedResponseReceiverId(aReceivedMessage1.ResponseReceiverId); string anAssociatedId2 = myDuplexChannelUnwrapper.GetAssociatedResponseReceiverId(aReceivedMessage2.ResponseReceiverId); Assert.AreEqual(anAssociatedId1, anAssociatedId2); myDuplexChannelUnwrapper.AttachedDuplexInputChannel.DisconnectResponseReceiver(anAssociatedId1); Assert.IsTrue(aResponseReceiverChannel1Disconnected); Assert.IsTrue(aResponseReceiverChannel2Disconnected); } finally { myDuplexChannelUnwrapper.DetachDuplexInputChannel(); myDuplexChannelWrapper.DetachDuplexOutputChannel(); } }