changes to handle fixed point analysis properly + bug fix.
[IRC.git] / Robust / src / Analysis / Scheduling / FIFORSchedule.java
1 package Analysis.Scheduling;
2
3 import java.util.Queue;
4 import java.util.Vector;
5
6 public class FIFORSchedule extends RuntimeSchedule {
7   static FIFORSchedule rschedule;
8
9   public static FIFORSchedule getFIFORSchedule() {
10     if(rschedule == null) {
11       rschedule = new FIFORSchedule();
12     }
13     return rschedule;
14   }
15
16   public FIFORSchedule() {
17     super("FIFO Algorithm");
18   }
19
20   public TaskSimulator schedule(Vector<TaskSimulator> tasks) {
21     if(tasks == null) {
22       return null;
23     }
24     TaskSimulator next = null;
25     int i = 0;
26     for(; i < tasks.size(); i++) {
27       next = tasks.elementAt(i);
28       int paraNum = next.getTd().numParameters();
29       Vector<Queue<ObjectSimulator>> pqueues = next.getParaQueues();
30       if((pqueues == null) || (pqueues.size() < paraNum)) {
31         continue;
32       }
33       int j = 0;
34       for(; j < pqueues.size(); j++) {
35         Queue<ObjectSimulator> objs = pqueues.elementAt(j);
36         if((objs == null) || (objs.size() == 0)) {
37           break;
38         }
39       }
40       if(j == pqueues.size()) {
41         pqueues = null;
42         return next;
43       }
44       pqueues = null;
45     }
46     if(i == tasks.size()) {
47       return null;
48     }
49     return next;
50   }
51 }