RateMonotonic.java 2.08 KB
Newer Older
1 2
package mvd.jester.priority;

3 4 5
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
6
import mvd.jester.model.Task;
7
import mvd.jester.simulator.AbstractSimulator;
8
import mvd.jester.simulator.internals.TaskContextInterface;
9
import mvd.jester.tests.AbstractTest;
10 11 12

public class RateMonotonic implements PriorityManager {

13 14 15
    final static Set<Class<? extends AbstractTest>> abstractTests = new HashSet<>(Arrays
            .asList(mvd.jester.tests.MaiaBertogna.class, mvd.jester.tests.SchmidMottok.class));
    final static Set<Class<? extends AbstractSimulator>> abstractSimulators =
16 17
            new HashSet<>(Arrays.asList(mvd.jester.simulator.ParallelSynchronous.class,
                    mvd.jester.simulator.DynamicForkJoin.class));
18

19 20 21 22 23
    /**
     * Compare the priority of two tasks according to the Rate Monotonic policy
     * 
     * @param t1 The first task
     * @param t2 The second task
24 25
     * @return 0 if both tasks have the same priority, negative number if the first task has a
     *         higher priority, positive number if the second task has a higher priority
26 27 28 29 30
     */
    @Override
    public int compare(Task t1, Task t2) {
        return Long.compare(t1.getPeriod(), t2.getPeriod());
    }
31 32 33 34 35

    @Override
    public int compare(TaskContextInterface t1, TaskContextInterface t2) {
        return Long.compare(t1.getTask().getPeriod(), t2.getTask().getPeriod());
    }
36 37 38 39 40 41 42

    @Override
    public boolean hasTest(AbstractTest abstractTest) {
        return abstractTests.contains(abstractTest.getClass());
    }

    @Override
43 44 45 46 47
    public boolean hasTest(Class<? extends AbstractTest> abstractTestClass) {
        return abstractTests.contains(abstractTestClass);
    }

    @Override
48 49 50 51 52
    public boolean hasSimulator(AbstractSimulator abstractSimulator) {
        return abstractSimulators.contains(abstractSimulator.getClass());
    }

    @Override
53 54 55 56 57
    public boolean hasSimulator(Class<? extends AbstractSimulator> abstractSimulatorClass) {
        return abstractSimulators.contains(abstractSimulatorClass);
    }

    @Override
58 59 60 61
    public String getName() {
        return "RM";
    }

62

63
}