public static TransportMessage ToTransportMessage(this IMessage message, Peer sender = null) { sender = sender ?? new Peer(new PeerId("Abc.Testing.Peer"), "tcp://abctest:159"); var serializer = new MessageSerializer(); var messageBytes = serializer.Serialize(message); return new TransportMessage(message.TypeId(), messageBytes, sender); }
public static IMessage ToMessage(this TransportMessage transportMessage) { var serializer = new MessageSerializer(); return serializer.ToMessage(transportMessage); }
public void should_not_forward_messages_to_upper_layer_when_stopping() { var receivedMessages = new List<TransportMessage>(); var receivingPeerId = new PeerId("Abc.Receiving.0"); var stopwatch = Stopwatch.StartNew(); var receivingTransport = CreateAndStartZmqTransport(onMessageReceived: receivedMessages.Add, peerId: receivingPeerId.ToString(), transportFactory: conf => new CapturingIsListeningTimeZmqTransport(conf, stopwatch)); var receivingPeer = new Peer(receivingPeerId, receivingTransport.InboundEndPoint); var messageSerializer = new MessageSerializer(); bool receivedWhileNotListening = false; receivingTransport.MessageReceived += message => { var cmdWithTimetamp = (FakeCommandWithTimestamp)messageSerializer.Deserialize(message.MessageTypeId, message.MessageBytes); if (cmdWithTimetamp.Timestamp > ((CapturingIsListeningTimeZmqTransport)receivingTransport).IsListeningSwitchTimestamp) receivedWhileNotListening = true; }; var sendingTransport = CreateAndStartZmqTransport(); var shouldSendMessages = true; var sendTask = Task.Factory.StartNew(() => { while (shouldSendMessages) sendingTransport.Send(new FakeCommandWithTimestamp(stopwatch.Elapsed).ToTransportMessage(), new[] { receivingPeer }); }); Wait.Until(() => sendTask.Status == TaskStatus.Running, 10.Seconds()); Wait.Until(() => receivedMessages.Count > 1, 10.Seconds()); receivingTransport.Stop(); receivedWhileNotListening.ShouldBeFalse(); shouldSendMessages = false; sendingTransport.Stop(); }