RateMonotonic.java 2.15 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<? extends Task>>> abstractTests =
            new HashSet<>(Arrays.asList(mvd.jester.tests.MaiaBertogna.class,
                    mvd.jester.tests.SchmidMottok.class));
16
    final static Set<Class<? extends AbstractSimulator>> abstractSimulators =
17 18
            new HashSet<>(Arrays.asList(mvd.jester.simulator.ParallelSynchronous.class,
                    mvd.jester.simulator.DynamicForkJoin.class));
19

20 21 22 23 24
    /**
     * Compare the priority of two tasks according to the Rate Monotonic policy
     * 
     * @param t1 The first task
     * @param t2 The second task
25 26
     * @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
27 28 29 30 31
     */
    @Override
    public int compare(Task t1, Task t2) {
        return Long.compare(t1.getPeriod(), t2.getPeriod());
    }
32 33 34 35 36

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

    @Override
39
    public boolean hasTest(AbstractTest<? extends Task> abstractTest) {
40 41 42 43
        return abstractTests.contains(abstractTest.getClass());
    }

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

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

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

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

63

64
}