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

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