private TBFToFromCarriedTraffic(MulticastDemand demand, boolean onlyThisLayer) { super(demand.getNetPlan()); this.initialElement = demand; this.onlyThisLayer = onlyThisLayer; this.initialFR = null; this.auxLayerInNodes = null; final Set<Link> linksAllLayers = new HashSet<>(); final Set<Demand> demandsAllLayers = new HashSet<>(); final Set<MulticastDemand> mDemandsAllLayers = new HashSet<>(); mDemandsAllLayers.add(demand); final Set<Link> thisLayerPropagation = new HashSet<>(); for (Node egressNode : demand.getEgressNodes()) thisLayerPropagation.addAll(demand.getLinksNoDownPropagationPotentiallyCarryingTraffic(egressNode)); linksAllLayers.addAll(thisLayerPropagation); if (!onlyThisLayer) updatePropagationDownWards(linksAllLayers, linksAllLayers, demandsAllLayers, mDemandsAllLayers); if (!onlyThisLayer) updatePropagationUpWards(demandsAllLayers, mDemandsAllLayers, linksAllLayers, demandsAllLayers, mDemandsAllLayers); final Set<NetworkLayer> layersToKeepAllElements = onlyThisLayer ? Sets.difference(new HashSet<>(netPlan.getNetworkLayers()), Sets.newHashSet(demand.getLayer())) : new HashSet<>(); updateAllButLinksDemandsMDemandsUsingExistingInfo(linksAllLayers, demandsAllLayers, mDemandsAllLayers, layersToKeepAllElements); }
private List<Triple<String,String,String>> getMulticastDemandInfoTables (MulticastDemand md) { final DecimalFormat df = new DecimalFormat("###.##"); final NetPlan np = md.getNetPlan(); final NetworkLayer layer = md.getLayer(); final List<Triple<String,String,String>> res = new ArrayList <> (); res.add(Triple.of("Demand index/id" , "M. demand " + md.getIndex() + " (id " + md.getId() + ")", "multicastDemand" + md.getId())); res.add(Triple.of("Layer" , "" + getLayerName(layer) , "layer" + layer.getId())); res.add(Triple.of("Offered traffic" , "" + df.format(md.getOfferedTraffic()) , "")); res.add(Triple.of("Carried traffic" , "" + df.format(md.getCarriedTraffic()) , "")); res.add(Triple.of("Lost traffic" , "" + df.format(md.getBlockedTraffic()) , "")); if (md.isCoupled()) { final Set<Link> coupledLinks = md.getCoupledLinks(); final NetworkLayer upperLayer = coupledLinks.iterator().next().getLayer(); res.add(Triple.of("- Upper layer coupled to", getLayerName(upperLayer) , "layer" + upperLayer.getId())); for (Link c : coupledLinks) res.add(Triple.of("- Coupled to", "Link " + c.getIndex() + " (id " + c.getId() + ")" , "link" + c.getId())); } res.add(Triple.of("Num. trees" , "" + md.getMulticastTrees().size() , "")); // for (MulticastTree t : md.getMulticastTrees()) // res.add(Triple.of("Multicast tree index/id" , "Multicast tree " + t.getIndex() + " (id " + t.getId() + ")" , "multicastTree" + t.getId())); res.add(Triple.of("Worst case e2e latency" , df.format(md.getWorseCasePropagationTimeInMs()) + " ms", "")); return res; }