source: DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/tasks/AbstractJobRegistry.java @ 1362

Revision 1362, 3.4 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.scheduling.manager.tasks;
2
3
4import gridsim.dcworms.DCWormsTags;
5
6import java.util.ArrayList;
7import java.util.List;
8import java.util.Map;
9import java.util.concurrent.ConcurrentHashMap;
10
11import schedframe.resources.units.ResourceUnit;
12import schedframe.resources.units.ResourceUnitName;
13import schedframe.scheduling.tasks.Job;
14import schedframe.scheduling.tasks.JobInterface;
15import schedframe.scheduling.tasks.Task;
16import schedframe.scheduling.tasks.TaskInterface;
17import simulator.DataCenterWorkloadSimulator;
18import dcworms.schedframe.scheduling.ExecTask;
19
20
21public abstract class AbstractJobRegistry /*extends ConcurrentHashMap<String, Job>*/ implements JobRegistry, Cloneable{
22       
23       
24        protected static final ConcurrentHashMap<String, JobInterface<?>> jobs = new ConcurrentHashMap<String, JobInterface<?>>();
25       
26        protected AbstractJobRegistry(){
27        }
28       
29        public boolean addJob(JobInterface<?> job) {
30                jobs.put(job.getId(), job);
31                return true;
32        }
33
34        public boolean addTask(TaskInterface<?> task) {
35                if(jobs.containsKey(task.getJobId())){
36                        getJob(task.getJobId()).add((Task)task);
37                        return true;
38                } else {
39                        return false;
40                }
41        }
42
43        public JobInterface<?> getJobInfo(String jobId) {
44                return jobs.get(jobId);
45        }
46
47        public TaskInterface<?> getTaskInfo(String jobId, String taskId) {
48                Task task = null;
49                Job job = getJob(jobId);
50               
51                if(job == null)
52                        return null;
53               
54                try {
55                        task = job.getTask(taskId);
56                } catch (NoSuchFieldException e) {
57                }
58                return task;
59        }
60       
61        public Job getJob(String jobId){
62                return (Job)jobs.get(jobId);
63        }
64       
65        public List<JobInterface<?>> getJobs(){
66                List<JobInterface<?>> jobList = new ArrayList<JobInterface<?>>();
67                for(String jobId:jobs.keySet()) {
68                        jobList.add(jobs.get(jobId));
69                }
70                return jobList;
71        }
72
73        public List<JobInterface<?>> getJobs(int status) {
74                List<JobInterface<?>> jobList = new ArrayList<JobInterface<?>>();
75                synchronized (jobs) {
76                        for(String jobId:jobs.keySet()){
77                                JobInterface<?> job = jobs.get(jobId);
78                                if (job.getStatus() == status) {
79                                        jobList.add(job);
80                                }
81                        }
82                }
83                return jobList;
84        }
85
86        @Override
87        public boolean pauseTask(String jobId, String taskId) {
88                ExecTask execTask = getTask(jobId, taskId);
89                if (execTask == null) {
90                        return false;
91                }else{
92                        String[] ids = new String[2];
93                        ids[0] = new String(jobId);
94                        ids[1] = new String(taskId);
95                        DataCenterWorkloadSimulator.getEventManager().sendToAllSchedulers(0, DCWormsTags.TASK_PAUSE, ids);
96                        return true;
97                }
98        }
99
100        public boolean resumeTask(String jobId, String taskId) {
101                ExecTask execTask = getTask(jobId, taskId);
102                if (execTask == null) {
103                        return false;
104                }else{
105                        String[] ids = new String[2];
106                        ids[0] = new String(jobId);
107                        ids[1] = new String(taskId);
108                        DataCenterWorkloadSimulator.getEventManager().sendToAllSchedulers(0, DCWormsTags.TASK_RESUME, ids);
109                        return true;   
110                }
111        }
112
113        public boolean migrateTask(String jobId, String taskId, Map<ResourceUnitName, ResourceUnit> choosenResources) {
114                ExecTask execTask = getTask(jobId, taskId);
115                if (execTask == null) {
116                        return false;
117                }else{
118                        Object[] data = new Object[3];
119                        data[0] = new String(jobId);
120                        data[1] = new String(taskId);
121                        data[2] = choosenResources;
122                        DataCenterWorkloadSimulator.getEventManager().sendToAllSchedulers(0, DCWormsTags.TASK_MOVE, data);
123                        return true;   
124                }
125        }
126
127        public boolean migrateTask(String jobId, String taskId, String nodeName) {
128                // TODO Auto-generated method stub
129                return false;
130        }
131       
132}
Note: See TracBrowser for help on using the repository browser.