source: DCWoRMS/branches/coolemall/src/schedframe/resources/devices/Device.java @ 1396

Revision 1396, 3.7 KB checked in by wojtekp, 11 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.resources.devices;
2
3import schedframe.events.Event;
4import schedframe.events.EventHandler;
5import schedframe.events.ResourceEventCommand;
6import schedframe.events.scheduling.EventReason;
7import schedframe.events.scheduling.SchedulingEvent;
8import schedframe.resources.ResourceStatus;
9import schedframe.resources.computing.ComputingResource;
10import schedframe.resources.computing.ResourceCharacteristics;
11import schedframe.resources.computing.extensions.Extension;
12import schedframe.resources.computing.extensions.ExtensionListImpl;
13import schedframe.resources.computing.profiles.energy.EnergyEvent;
14import schedframe.resources.computing.profiles.energy.EnergyEventType;
15import schedframe.resources.computing.profiles.energy.EnergyExtension;
16import schedframe.resources.devices.description.DeviceDescription;
17
18public class Device extends PhysicalResource{
19
20        private ComputingResource compResource;
21       
22        public Device (DeviceDescription devDesc){
23                this.type = devDesc.getType();
24                this.name = devDesc.getId();
25                this.extensionList = new ExtensionListImpl(1);
26                initCharacteristics(devDesc);
27                accept(new EnergyExtension.Builder().resource(this).powerProfile(devDesc.getPowerProfile()).airflowProfile(devDesc.getAirflowProfile()).thermalProfile(devDesc.getThermalProfile()).build());   
28        }
29
30        public String getFullName() {
31               
32                if(this.getResourceCharacteristic().getParameters().get("fullPath") != null){
33                        String fullPath = this.getResourceCharacteristic().getParameters().get("fullPath").get(0).getContent();
34                        return fullPath;
35                }
36                else
37                        return compResource.getFullName() + "/" + name;
38        }
39
40        public void setStatus(ResourceStatus newStatus) {
41                if(newStatus != status){
42                        status = newStatus;
43                }
44        }
45
46        public void handleEvent(Event event) {
47                ResourceEventCommand rec = new ResourceEventCommand(this);
48                rec.execute(event);
49        }
50       
51        class DeviceEventHandler implements EventHandler{
52               
53                public void handleResourceEvent(Event event){
54                        if (extensionList != null) {
55                                for (Extension extension : extensionList) {
56                                        if (extension.supportsEvent(event)) {
57                                                extension.handleEvent(event);
58                                        }
59                                }
60                        }
61                        if(event.getReason() != EventReason.SIM_INIT)
62                                compResource.handleEvent(event);
63                }
64               
65                public void handleSchedulingEvent(SchedulingEvent event){
66
67                }
68        }
69       
70        public EventHandler getEventHandler(){
71                return new DeviceEventHandler();
72        }
73       
74        public final void initiate(){
75               
76                ResourceEventCommand rec = new ResourceEventCommand(this);
77                EnergyEvent event = new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller");
78                event.setReason(EventReason.SIM_INIT);
79                rec.execute(event);
80               
81                rec = new ResourceEventCommand(this);
82                event = new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller");
83                event.setReason(EventReason.SIM_INIT);
84                rec.execute(event);
85               
86                rec = new ResourceEventCommand(this);
87                event = new EnergyEvent(EnergyEventType.TEMPERATURE_CHANGED, "Resource controller");
88                event.setReason(EventReason.SIM_INIT);
89                rec.execute(event);
90                       
91                //alternative way
92                //getEventHandler().handleResourceEvent(new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller"));
93                //getEventHandler().handleResourceEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller"));
94                //getEventHandler().handleResourceEvent(new EnergyEvent(EnergyEventType.TEMPERATURE_CHANGED, "Resource controller"));
95        }
96
97        protected void initCharacteristics(DeviceDescription devDesc){
98                resourceCharacteristic = ResourceCharacteristics.builder().location(devDesc.getLocation()).parameters(devDesc.getParameters()).build();
99        }
100
101        public void setComputingResource(ComputingResource compResource) {
102                this.compResource = compResource;
103        }
104
105        public ComputingResource getComputingResource() {
106                return compResource;
107        }
108
109}
Note: See TracBrowser for help on using the repository browser.