SchedulingInfo.java 2.02 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
package mvd.jester.info;

import java.util.HashSet;
import java.util.Optional;
import java.util.Set;

/**
 * DeadlineMissInfo
 */
public class SchedulingInfo {

12 13
    private final double parallelTaskRatio;
    private final double utilization;
14 15 16
    private final Set<TerminationInfo> terminationInfos;
    private Optional<TerminationInfo> failedTerminationInfo;

17 18 19
    public SchedulingInfo(double parallelTaskRatio, double utilization) {
        this.parallelTaskRatio = parallelTaskRatio;
        this.utilization = utilization;
20 21 22 23
        this.terminationInfos = new HashSet<>();
        this.failedTerminationInfo = Optional.empty();
    }

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
    /**
     * @return the utilization
     */
    public double getUtilization() {
        return utilization;
    }

    /**
     * @return the parallelTaskRatio
     */
    public double getParallelTaskRatio() {
        return parallelTaskRatio;
    }

    public SchedulingInfo(Set<TerminationInfo> terminationInfos, double parallelTaskRatio,
            double utilization) {
40
        this.terminationInfos = terminationInfos;
41 42
        this.parallelTaskRatio = parallelTaskRatio;
        this.utilization = utilization;
43 44
        failedTerminationInfo =
                terminationInfos.stream().filter(t -> t.getLateness() > 0).findFirst();
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
    }

    public boolean checkTasksetFeasible() {
        // return terminationInfos.isEmpty();
        return !terminationInfos.stream().anyMatch(t -> t.getLateness() > 0);
    }

    public void addTerminationInfo(TerminationInfo terminationInfo) {
        terminationInfos.add(terminationInfo);
    }

    /**
     * @return the terminationInfos
     */
    public Set<TerminationInfo> getTerminationInfos() {
        return terminationInfos;
    }

    /**
     * @return the failedTerminationInfo
     */
    public Optional<TerminationInfo> getFailedTerminationInfo() {
        return failedTerminationInfo;
    }

70
    public void setFailedTerminationInfo(TerminationInfo failedTerminationInfo) {
71 72 73
        this.failedTerminationInfo = Optional.of(failedTerminationInfo);
    }
}