private void CreateNodeContainer(NetworkEvent.NodeAdded nodeAdded) { nodeAdded.Node.Switch( gateway => gatewayNodeFactory.Create(nodeAdded.Node.Id), router => routerNodeFactory.Create(nodeAdded.Node.Id), consumer => consumerNodeFactory.Create(nodeAdded.Node.Id) ); }
private static object ToNodeAddedEventTransport(this NetworkEvent.NodeAdded source) { return(new NodeAddedEventTransport { NodeID = new SerializableGuid(source.Node.Id.Value), PositionX = source.Node.Position.X, PositionY = source.Node.Position.Y, QueueContent = source.Node.Queue.Content.Select(x => new SerializableGuid(x.Value)).ToList(), QueueCapacity = source.Node.Queue.Capacity, TopPortLinkIdentifier = new SerializableGuid(source.Node.Ports.GetLinkIdentifier(PortDirection.Top)), TopPortConnectionDirection = source.Node.Ports.GetLinkDirection(PortDirection.Top), BottomPortLinkIdentifier = new SerializableGuid(source.Node.Ports.GetLinkIdentifier(PortDirection.Bottom)), BottomPortConnectionDirection = source.Node.Ports.GetLinkDirection(PortDirection.Bottom), LeftPortLinkIdentifier = new SerializableGuid(source.Node.Ports.GetLinkIdentifier(PortDirection.Left)), LeftPortConnectionDirection = source.Node.Ports.GetLinkDirection(PortDirection.Left), RightPortLinkIdentifier = new SerializableGuid(source.Node.Ports.GetLinkIdentifier(PortDirection.Right)), RightPortConnectionDirection = source.Node.Ports.GetLinkDirection(PortDirection.Right), RouterState = source.Node.Match( gateway => Enumerable.Empty <int>().ToArray(), router => new[] { router.State[PacketType.Red], router.State[PacketType.Blue], router.State[PacketType.Green] }.Select(x => (int)x).ToArray(), consumer => Enumerable.Empty <int>().ToArray()) }); }