package mvd.jester.model; import java.util.Set; import org.jgrapht.experimental.dag.DirectedAcyclicGraph; import org.jgrapht.graph.DefaultEdge; import mvd.jester.utils.DagUtils; public class DagTask extends Task { private DirectedAcyclicGraph jobDag; private final Set workloadDistribution; public DagTask(final DirectedAcyclicGraph jobDag, final long period, final long numberOfThreads) { super(period, period, DagUtils.calculateWorkload(jobDag), DagUtils.calculateCriticalPath(jobDag), numberOfThreads); this.jobDag = jobDag; this.workloadDistribution = DagUtils.calculateWorkloadDistribution(this.jobDag, this.criticalPath); } public DagTask(final DirectedAcyclicGraph jobDag, final long period, final Set workloadDistribution, final long numberOfThreads) { super(period, period, DagUtils.calculateWorkload(jobDag), DagUtils.calculateCriticalPath(jobDag), numberOfThreads); this.jobDag = jobDag; this.workloadDistribution = workloadDistribution; } /** * @return the jobDag */ public DirectedAcyclicGraph getJobDag() { return jobDag; } /** * @param jobDag the jobDag to set */ public void setJobDag(final DirectedAcyclicGraph jobDag) { this.jobDag = jobDag; } /** * @return the workloadDistribution */ @Override public Set getWorkloadDistribution() { return workloadDistribution; } @Override public long getMaximumParallelism() { long max = 0; for (final Segment s : workloadDistribution) { if (max < s.getNumberOfJobs()) { max = s.getNumberOfJobs(); } } return max; } }