source: xssim/trunk/src/test/rewolucja/energy/profile/implementation/ComputingNodePowerProfile.java @ 131

Revision 131, 2.0 KB checked in by wojtekp, 13 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package test.rewolucja.energy.profile.implementation;
2
3import java.util.Arrays;
4import java.util.List;
5
6import schedframe.resources.PowerState;
7import test.rewolucja.energy.extension.EnergyExtension;
8import test.rewolucja.energy.profile.AbstractPowerProfile;
9import test.rewolucja.extensions.ExtensionType;
10import test.rewolucja.resources.ResourceStatus;
11import test.rewolucja.resources.physical.base.ComputingResource;
12import test.rewolucja.resources.physical.implementation.ComputingNode;
13
14public class ComputingNodePowerProfile extends AbstractPowerProfile{
15
16        protected ComputingNode computingNode;
17
18        public ComputingNodePowerProfile(){
19                powerState = PowerState.ON;
20        }
21       
22        public void visit(ComputingNode compNode){
23                computingNode = compNode;
24                energyExtension = (EnergyExtension) computingNode.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION);
25        }
26       
27        public boolean setPowerState(PowerState state){
28                if(!supportPowerState(state))
29                        return false;
30                powerState = state;
31                if(computingNode.getProcessors() != null)
32                {
33                        for(ComputingResource child:computingNode.getProcessors()){
34                                child.getPowerInterface().setPowerState(state);
35                        }
36                }
37                if(state == PowerState.OFF){
38                        computingNode.setStatus(ResourceStatus.NOTAVAILABLE);
39                }
40                else if(state == PowerState.ON){
41                        computingNode.setStatus(ResourceStatus.FREE);
42                }
43                return true;
44        }
45       
46        public double getPowerConsumption(PowerState state) {
47                if(powerState == PowerState.OFF)
48                        return 0;
49                else if(powerState == PowerState.ON)
50                        return 750;
51                else return 500;
52        }
53
54        public boolean supportPowerState(PowerState state) {
55                switch(state){
56                        case ON:
57                                return true;
58                        case OFF:
59                                return true;
60                        case SLEEP:
61                                return true;
62                        case HIBERNATE:
63                                return true;
64                        default: return false;
65                }
66        }
67
68        public List<PowerState> getSupportedPowerStates() {
69                return Arrays.asList(new PowerState[]{PowerState.ON, PowerState.OFF, PowerState.SLEEP, PowerState.HIBERNATE});
70        }
71
72        public void turnOn(){
73                setPowerState(PowerState.ON);
74        }
75       
76        public void turnOff(){
77                setPowerState(PowerState.OFF);
78        }
79
80}
Note: See TracBrowser for help on using the repository browser.