source: DCWoRMS/trunk/src/test/EventManager.java @ 780

Revision 780, 3.4 KB checked in by wojtekp, 12 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package test;
2
3import gridsim.GridSimCore;
4
5import java.util.ArrayList;
6import java.util.LinkedList;
7import java.util.List;
8import java.util.Properties;
9
10import schedframe.ResourceController;
11import schedframe.events.ResourceEventCommand;
12import schedframe.events.scheduling.EventReason;
13import schedframe.exceptions.ModuleException;
14import schedframe.resources.computing.ComputingResource;
15import schedframe.resources.computing.profiles.energy.EnergyEvent;
16import schedframe.resources.computing.profiles.energy.EnergyEventType;
17import schedframe.scheduling.Scheduler;
18import schedframe.scheduling.plugin.grid.Module;
19import schedframe.scheduling.plugin.grid.ModuleType;
20
21public class EventManager extends GridSimCore implements Module{
22
23        protected ResourceController resourceController;
24       
25        public EventManager(String name) throws Exception {
26                super(name, 1);
27        }
28
29        public void send(String entityName, double delay, int tag, Object data){
30                super.send(entityName, delay, tag, data);
31        }
32       
33        public void send(int destId, double delay, int tag){
34                super.send(destId, delay, tag);
35        }
36       
37        public void send(int destId, double delay, int tag, Object data){
38                super.send(destId, delay, tag, data);
39        }
40       
41        public void init(Properties properties) throws ModuleException {
42        }
43
44        public void sendToAllSchedulers(double delay, int tag, Object data){
45                List<Scheduler> allSchedulers =  new ArrayList<Scheduler>();
46                if (resourceController.getScheduler().getChildren() != null) {
47                        LinkedList<Scheduler> toExamine = new LinkedList<Scheduler>();
48                        toExamine.push(resourceController.getScheduler());
49                        allSchedulers.add(resourceController.getScheduler());
50
51                        while (!toExamine.isEmpty()) {
52                                Scheduler scheduler = toExamine.pop();
53                                List<Scheduler> schedulers = scheduler.getChildren();
54                                int numberOfSched = schedulers.size();
55                                for (int i = 0; i < numberOfSched; i++) {
56                                        Scheduler schedulerChild = schedulers.get(i);
57                                        toExamine.addLast(schedulerChild);
58                                        allSchedulers.add(schedulerChild);
59                                }
60                        }
61                }
62               
63                for(Scheduler scheduler: allSchedulers){
64                        super.send(scheduler.get_id(), delay, tag, data);
65                }
66        }
67       
68        public void sendToAllResources(double delay, int tag, Object data){
69                List<ComputingResource> allComputingResources = new ArrayList<ComputingResource>();
70
71                if (resourceController.getComputingResources() != null) {
72                        LinkedList<ComputingResource> toExamine = new LinkedList<ComputingResource>();
73                        for(ComputingResource compRes: resourceController.getComputingResources()){
74                                toExamine.push(compRes);
75                                allComputingResources.add(compRes);
76                        }
77
78                        while (!toExamine.isEmpty()) {
79                                ComputingResource resource = toExamine.pop();
80                                List<ComputingResource> resources = resource.getChildren();
81                                int numberOfRes = resources.size();
82                                for (int i = 0; i < numberOfRes; i++) {
83                                        ComputingResource resourceChild = resources.get(i);
84                                        toExamine.addLast(resourceChild);
85                                        allComputingResources.add(resourceChild);
86                                }
87                        }
88                }
89               
90                ResourceEventCommand rec;
91                EnergyEvent event;
92                for(ComputingResource compRes: allComputingResources){
93                        rec = new ResourceEventCommand(compRes);
94                        event = new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller");
95                        event.setReason(EventReason.SIM_INIT);
96                        rec.execute(event);
97                        //super.send(scheduler.get_id(), delay, tag, data);
98                }
99
100        }
101       
102        public void sendTo(List<String> ids){
103               
104        }
105       
106        public void dispose() throws ModuleException {
107        }
108
109        public ModuleType getType() {
110                return ModuleType.EVENT_MANAGER;
111        }
112
113}
Note: See TracBrowser for help on using the repository browser.