private Map<Long,Double> netPlanRouteCarriedTrafficMap (NetPlan np) { Map<Long,Double> res = new HashMap<Long,Double> (); for (Route r : np.getRoutes ()) res.put (r.getId () , r.getCarriedTraffic()); return res; } private class PacketInfo
private Map<Long,Double> netPlanRouteCarriedTrafficMap (NetPlan np) { Map<Long,Double> res = new HashMap<Long,Double> (); for (Route r : np.getRoutes ()) res.put (r.getId () , r.getCarriedTraffic()); return res; }
void copyFrom (Route origin) { if ((this.id != origin.id) || (this.index != origin.index)) throw new RuntimeException ("Bad"); if ((this.netPlan == null) || (origin.netPlan == null) || (this.netPlan == origin.netPlan)) throw new RuntimeException ("Bad"); this.currentCarriedTrafficIfNotFailing = origin.currentCarriedTrafficIfNotFailing; this.currentLinksAndResourcesOccupationIfNotFailing = new ArrayList<Double> (origin.currentLinksAndResourcesOccupationIfNotFailing); this.initialStateCarriedTrafficIfNotFailing = origin.initialStateCarriedTrafficIfNotFailing; this.initialStateOccupationIfNotFailing = new ArrayList<Double> (origin.initialStateOccupationIfNotFailing); this.currentPath = (List<NetworkElement>) getInThisNetPlan(origin.currentPath); try { this.initialStatePath = (List<NetworkElement>) getInThisNetPlan(origin.initialStatePath); } catch (Exception e) { this.initialStatePath = new ArrayList<> (currentPath); } this.backupRoutes = (List<Route>) getInThisNetPlan(origin.backupRoutes); this.cache_routesIAmBackUp = (SortedSet<Route>) getInThisNetPlan(origin.cache_routesIAmBackUp); this.cache_seqLinksRealPath = (List<Link>) getInThisNetPlan(origin.cache_seqLinksRealPath); this.cache_seqNodesRealPath = (List<Node>) getInThisNetPlan(origin.cache_seqNodesRealPath); this.cache_hasLoops = origin.cache_hasLoops; this.cache_linkAndResourcesTraversedOccupiedCapIfnotFailMap.clear(); this.bidirectionalPair = origin.bidirectionalPair == null? null : netPlan.getRouteFromId(origin.bidirectionalPair.getId()); for (Entry<NetworkElement,Double> e : origin.cache_linkAndResourcesTraversedOccupiedCapIfnotFailMap.entrySet()) this.cache_linkAndResourcesTraversedOccupiedCapIfnotFailMap.put(getInThisNetPlan (e.getKey()) , e.getValue()); }
private List<Triple<String,String,String>> getRouteInfoTables (Route r) { final DecimalFormat df = new DecimalFormat("###.##"); final NetPlan np = r.getNetPlan(); final List<Triple<String,String,String>> res = new ArrayList <> (); res.add(Triple.of("Route index/id" , "Route " + r.getIndex() + " (id " + r.getId() + ")", "route" + r.getId())); res.add(Triple.of("Layer" , "" + getLayerName(r.getLayer()) , "layer" + r.getLayer().getId())); res.add(Triple.of("Route demand index/id" , "" + r.getDemand().getIndex() + " (id " + r.getDemand().getId() + ")" , "demand" + r.getDemand().getId())); res.add(Triple.of("Demand offered traffic" , "" + df.format(r.getDemand().getOfferedTraffic()) + " " + np.getDemandTrafficUnitsName(r.getLayer()) , "")); res.add(Triple.of("Demand carried traffic" , "" + df.format(r.getDemand().getCarriedTraffic()) + " " + np.getDemandTrafficUnitsName(r.getLayer()) , "")); res.add(Triple.of("Route carried traffic" , "" + df.format(r.getCarriedTraffic()) + " " + np.getDemandTrafficUnitsName(r.getLayer()), "")); res.add(Triple.of("Is up?" , "" + np.isUp(r.getPath()), "")); res.add(Triple.of("Worst link utilization" , "" + df.format(r.getSeqLinks().stream().mapToDouble(e->e.getUtilization()).max().orElse(0)), "")); if (r.isServiceChain()) res.add(Triple.of("Worst resource utilization" , "" + df.format(r.getSeqResourcesTraversed().stream().mapToDouble(e->e.getUtilization()).max().orElse(0)), "")); res.add(Triple.of("Is service chain?" , "" + r.getDemand().isServiceChainRequest(), "")); res.add(Triple.of("Route length (km)" , "" + df.format(r.getLengthInKm()) + " km", "")); res.add(Triple.of("Route length (ms)" , "" + df.format(r.getPropagationDelayInMiliseconds()) + " ms", "")); res.add(Triple.of("Is backup route?" , "" + r.isBackupRoute(), "")); for (Route pr : r.getRoutesIAmBackup()) res.add(Triple.of("-- Primary route" , "Route " + pr.getIndex() , "route" + pr.getId())); res.add(Triple.of("Has backup routes?" , "" + r.hasBackupRoutes(), "")); for (Route br : r.getBackupRoutes()) res.add(Triple.of("-- Backup route" , "Route " + br.getIndex() , "route" + br.getId())); return res; } private List<Triple<String,String,String>> getMulticastTreeInfoTables (MulticastTree t)
private List<Triple<String,String,String>> getResourceInfoTables (Resource r) { final DecimalFormat df = new DecimalFormat("###.##"); final NetPlan np = r.getNetPlan(); final List<Triple<String,String,String>> res = new ArrayList <> (); final String resCapUnits = r.getCapacityMeasurementUnits(); res.add(Triple.of("Resource index/id" , "Resource " + r.getIndex() + " (id " + r.getId() + ")", "resource" + r.getId())); res.add(Triple.of("Name" , r.getName().equals("")? "No name" : r.getName(), "")); res.add(Triple.of("Type" , r.getType() , "")); res.add(Triple.of("Host node" , r.iAttachedToANode()? getNodeName(r.getHostNode().get()) : "---" , "")); res.add(Triple.of("Capacity occupied / total" , df.format(r.getOccupiedCapacity()) + " / " + df.format(r.getCapacity()) + " " + resCapUnits , "")); res.add(Triple.of("Processing time" , df.format(r.getProcessingTimeToTraversingTrafficInMs()) + " ms", "")); res.add(Triple.of("Is up?", "" + (r.iAttachedToANode()? r.getHostNode().get().isUp() : true) , "")); res.add(Triple.of("# base resources", "" + r.getBaseResources().size() , "")); for (Resource br : r.getBaseResources()) res.add(Triple.of(getResourceName(br) + " (" + br.getType() + ")" , "Occup: " + df.format(r.getCapacityOccupiedInBaseResource(br)) + " " + br.getCapacityMeasurementUnits() , "resource" + br.getId())); res.add(Triple.of("# upper resources", "" + r.getUpperResources().size() , "")); for (Resource ur : r.getUpperResources()) res.add(Triple.of(getResourceName(ur) + " (" + ur.getType() + ")" , "Occup: " + df.format(r.getCapacityOccupiedByUpperResource(ur)) + " " + resCapUnits , "resource" + ur.getId())); res.add(Triple.of("# Traversing routes", "" + r.getTraversingRoutes().size() , "")); for (Route route : r.getTraversingRoutes()) res.add(Triple.of("- Route " + route.getIndex() + " (" + getLayerName(route.getLayer()) + ")", "Occup: " + df.format(r.getTraversingRouteOccupiedCapacity(route)) + " " + resCapUnits + r.getTraversingRoutes().size() , "route" + route.getId())); return res; } private List<Triple<String,String,String>> getSRGInfoTables (SharedRiskGroup srg)
out.append("<td><a name=\"lp" + r.getIndex() + "\">" + r.getIndex() + " (id: " + r.getId() + ")"+ "</a></td>"); out.append("<td>" + r.getDemand().getIndex() + "</td>"); out.append("<td>" + printNode(r.getIngressNode())+ "</td>"); out.append("<td><a name=\"lpProt" + segment.getIndex() + "\">" + segment.getIndex() + " (id: " + segment.getId() + ")"+ "</a></td>"); out.append("<td>"); for (Route r : segment.getRoutesIAmBackup())
long routeId = route.getId(); String segmentLabel = "Backup route id " + backupRoute.getId() + ": path = " + getSequenceLinkResourceIndexes(backupRoute) + ", seq. nodes = " + getSequenceNodeIndexesWithResourceInfo(backupRoute) + ", occupied capacity = " + getSequenceOccupiedCapacities(backupRoute); backupRouteSelector.addItem(StringLabeller.of(backupRoute.getId(), segmentLabel)); model.addRow(new Object[]{backupRoute.getId(), getSequenceLinkResourceIndexes(backupRoute), getSequenceNodeIndexesWithResourceInfo(backupRoute), getSequenceOccupiedCapacities(backupRoute), "Remove", "View"});