Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public static IMessage ToMessage(this TransportMessage transportMessage)
 {
     var serializer = new MessageSerializer();
     return serializer.ToMessage(transportMessage);
 }
Ejemplo n.º 3
0
        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();
        }