public static void AddPrioritySegment(ushort nodeId, ushort segmentId, PrioritySegment.PriorityType type)
        {
            if (nodeId <= 0 || segmentId <= 0)
            {
                return;
            }

            Log.Message("adding PrioritySegment @ node " + nodeId + ", seg. " + segmentId + ", type " + type);
            if (PrioritySegments.ContainsKey(segmentId))
            {
                var prioritySegment = PrioritySegments[segmentId];
                prioritySegment.Segment = segmentId;

                Log.Message("Priority segment already exists. Node1=" + prioritySegment.Node1 + " Node2=" + prioritySegment.Node2);

                if (prioritySegment.Node1 == nodeId || prioritySegment.Node1 == 0)
                {
                    Log.Message("Updating Node1");
                    prioritySegment.Node1 = nodeId;
                    PrioritySegments[segmentId].Instance1 = new PrioritySegment(nodeId, segmentId, type);
                    return;
                }

                if (prioritySegment.Node2 != 0)
                {
                    // overwrite Node2
                    Log.Warning("Overwriting priority segment for node " + nodeId + ", seg. " + segmentId + ", type " + type);
                    prioritySegment.Node2               = nodeId;
                    prioritySegment.Instance2.Nodeid    = nodeId;
                    prioritySegment.Instance2.Segmentid = segmentId;
                    prioritySegment.Instance2.Type      = type;
                    rebuildPriorityNodes();
                }
                else
                {
                    // add Node2
                    Log.Message("Adding as Node2");
                    prioritySegment.Node2     = nodeId;
                    prioritySegment.Instance2 = new PrioritySegment(nodeId, segmentId, type);
                }
            }
            else
            {
                // add Node1
                Log.Message("Adding as Node1");
                PrioritySegments.Add(segmentId, new TrafficSegment());
                PrioritySegments[segmentId].Segment   = segmentId;
                PrioritySegments[segmentId].Node1     = nodeId;
                PrioritySegments[segmentId].Instance1 = new PrioritySegment(nodeId, segmentId, type);
            }
            priorityNodes.Add(nodeId);
        }
Ejemplo n.º 2
0
        public static void addPrioritySegment(ushort nodeID, int segmentID, PrioritySegment.PriorityType type)
        {
            if (prioritySegments.ContainsKey(segmentID))
            {
                var prioritySegment = prioritySegments[segmentID];

                prioritySegment.node_2     = nodeID;
                prioritySegment.instance_2 = new PrioritySegment(nodeID, segmentID, type);
            }
            else
            {
                prioritySegments.Add(segmentID, new TrafficSegment());
                prioritySegments[segmentID].segment    = segmentID;
                prioritySegments[segmentID].node_1     = nodeID;
                prioritySegments[segmentID].instance_1 = new PrioritySegment(nodeID, segmentID, type);
            }
        }