DagTask.java 1.88 KB
Newer Older
1 2 3 4 5
package mvd.jester.model;

import java.util.Set;
import org.jgrapht.experimental.dag.DirectedAcyclicGraph;
import org.jgrapht.graph.DefaultEdge;
6
import mvd.jester.utils.DagUtils;
7

8
public class DagTask extends Task {
9 10 11 12

    private DirectedAcyclicGraph<Job, DefaultEdge> jobDag;
    private final Set<Segment> workloadDistribution;

13 14
    public DagTask(final DirectedAcyclicGraph<Job, DefaultEdge> jobDag, final long period,
            final long numberOfThreads) {
15 16
        super(period, period, DagUtils.calculateWorkload(jobDag),
                DagUtils.calculateCriticalPath(jobDag), numberOfThreads);
17 18 19 20 21
        this.jobDag = jobDag;
        this.workloadDistribution =
                DagUtils.calculateWorkloadDistribution(this.jobDag, this.criticalPath);
    }

22 23 24 25 26 27
    public DagTask(final DirectedAcyclicGraph<Job, DefaultEdge> jobDag, final long period,
            final Set<Segment> workloadDistribution, final long numberOfThreads) {
        super(period, period, DagUtils.calculateWorkload(jobDag),
                DagUtils.calculateCriticalPath(jobDag), numberOfThreads);
        this.jobDag = jobDag;
        this.workloadDistribution = workloadDistribution;
28 29 30 31 32 33 34 35 36 37 38 39 40
    }


    /**
     * @return the jobDag
     */
    public DirectedAcyclicGraph<Job, DefaultEdge> getJobDag() {
        return jobDag;
    }

    /**
     * @param jobDag the jobDag to set
     */
41
    public void setJobDag(final DirectedAcyclicGraph<Job, DefaultEdge> jobDag) {
42 43 44 45 46 47
        this.jobDag = jobDag;
    }

    /**
     * @return the workloadDistribution
     */
48
    @Override
49 50 51 52 53 54 55
    public Set<Segment> getWorkloadDistribution() {
        return workloadDistribution;
    }

    @Override
    public long getMaximumParallelism() {
        long max = 0;
56
        for (final Segment s : workloadDistribution) {
57 58 59 60 61 62 63 64
            if (max < s.getNumberOfJobs()) {
                max = s.getNumberOfJobs();
            }
        }
        return max;
    }

}