public SetNetworkLinkEndsWhenNodesLinked(LinkIdentifier linkId, IObservable <NetworkEvent> networkEvents, IDisplayLink displayLink, NodePositionReadModel nodePositions)
 {
     networkEvents
     .OfType <NetworkEvent, NetworkEvent.LinkAdded>()
     .Where(linkAdded => linkAdded.Link.Id == linkId)
     .Subscribe(linkAdded => displayLink.DisplayLink(nodePositions[linkAdded.Link.Source], nodePositions[linkAdded.Link.Sink]));
 }
예제 #2
0
        private void TransmitPacket(PacketIdentifier packetId, LinkIdentifier linkId)
        {
            float delay = linkLatency[linkId];

            displayTransmission.Display(packetId, delay);

            Observable.Timer(TimeSpan.FromSeconds(delay))
            .Subscribe(_ => CompleteTransmission(packetId, linkId));
        }
예제 #3
0
 public OnStartTransmission(LinkIdentifier linkId, IObservable <NetworkEvent> networkEvents, IDisplayPacketTransmission displayTransmission, LinkLatencyReadModel linkLatency, IEnqueueCommand <NetworkCommand> commandQueue)
 {
     this.displayTransmission = displayTransmission;
     this.linkLatency         = linkLatency;
     this.commandQueue        = commandQueue;
     networkEvents
     .OfType <NetworkEvent, NetworkEvent.PacketTransmissionStarted>()
     .Where(transmissionStarted => transmissionStarted.LinkId == linkId)
     .Subscribe(transmissionStarted => TransmitPacket(transmissionStarted.PacketId, transmissionStarted.LinkId));
 }
 private void Initialize(NodeIdentifier nodeId, LinkIdentifier linkId)
 {
     commandQueue.Enqueue(new NetworkCommand.IncrementPacketTypeDirection(nodeId, PacketType.Red));
     commandQueue.Enqueue(new NetworkCommand.IncrementPacketTypeDirection(nodeId, PacketType.Blue));
     commandQueue.Enqueue(new NetworkCommand.IncrementPacketTypeDirection(nodeId, PacketType.Green));
 }
예제 #5
0
 public float this[LinkIdentifier linkId]
 => _latencies.Lookup(linkId).OrElseDefault();
예제 #6
0
 private void CompleteTransmission(PacketIdentifier packetId, LinkIdentifier linkId)
 {
     commandQueue.Enqueue(new NetworkCommand.CompleteTransmission(packetId, linkId));
 }