start of new file
[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                 return next;
42             }
43         }
44         if(i == tasks.size()) {
45             return null;
46         }
47         return next;
48     }
49 }