init
This commit is contained in:
144
src/org/fog/entities/MyActuator.java
Normal file
144
src/org/fog/entities/MyActuator.java
Normal file
@@ -0,0 +1,144 @@
|
||||
package org.fog.entities;
|
||||
|
||||
import org.cloudbus.cloudsim.core.CloudSim;
|
||||
import org.cloudbus.cloudsim.core.SimEntity;
|
||||
import org.cloudbus.cloudsim.core.SimEvent;
|
||||
import org.fog.application.AppLoop;
|
||||
import org.fog.application.MyApplication;
|
||||
import org.fog.utils.FogEvents;
|
||||
import org.fog.utils.GeoLocation;
|
||||
import org.fog.utils.Logger;
|
||||
import org.fog.utils.TimeKeeper;
|
||||
|
||||
public class MyActuator extends SimEntity{
|
||||
|
||||
private int gatewayDeviceId;
|
||||
private double latency;
|
||||
private GeoLocation geoLocation;
|
||||
private String appId;
|
||||
private int userId;
|
||||
private String actuatorType;
|
||||
private MyApplication app;
|
||||
|
||||
public MyActuator(String name, int userId, String appId, int gatewayDeviceId, double latency, GeoLocation geoLocation, String actuatorType, String srcModuleName) {
|
||||
super(name);
|
||||
this.setAppId(appId);
|
||||
this.gatewayDeviceId = gatewayDeviceId;
|
||||
this.geoLocation = geoLocation;
|
||||
setUserId(userId);
|
||||
setMyActuatorType(actuatorType);
|
||||
setLatency(latency);
|
||||
}
|
||||
|
||||
public MyActuator(String name, int userId, String appId, String actuatorType) {
|
||||
super(name);
|
||||
this.setAppId(appId);
|
||||
setUserId(userId);
|
||||
setMyActuatorType(actuatorType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startEntity() {
|
||||
sendNow(gatewayDeviceId, FogEvents.ACTUATOR_JOINED, getLatency());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEvent(SimEvent ev) {
|
||||
switch(ev.getTag()){
|
||||
case FogEvents.TUPLE_ARRIVAL:
|
||||
processTupleArrival(ev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void processTupleArrival(SimEvent ev) {
|
||||
Tuple tuple = (Tuple)ev.getData();
|
||||
Logger.debug(getName(), "Received tuple "+tuple.getCloudletId()+"on "+tuple.getDestModuleName());
|
||||
String srcModule = tuple.getSrcModuleName();
|
||||
String destModule = tuple.getDestModuleName();
|
||||
MyApplication app = getApp();
|
||||
|
||||
for(AppLoop loop : app.getLoops()){
|
||||
if(loop.hasEdge(srcModule, destModule) && loop.isEndModule(destModule)){
|
||||
|
||||
Double startTime = TimeKeeper.getInstance().getEmitTimes().get(tuple.getActualTupleId());
|
||||
if(startTime==null)
|
||||
break;
|
||||
if(!TimeKeeper.getInstance().getLoopIdToCurrentAverage().containsKey(loop.getLoopId())){
|
||||
TimeKeeper.getInstance().getLoopIdToCurrentAverage().put(loop.getLoopId(), 0.0);
|
||||
TimeKeeper.getInstance().getLoopIdToCurrentNum().put(loop.getLoopId(), 0);
|
||||
}
|
||||
double currentAverage = TimeKeeper.getInstance().getLoopIdToCurrentAverage().get(loop.getLoopId());
|
||||
int currentCount = TimeKeeper.getInstance().getLoopIdToCurrentNum().get(loop.getLoopId());
|
||||
double delay = CloudSim.clock()- TimeKeeper.getInstance().getEmitTimes().get(tuple.getActualTupleId());
|
||||
TimeKeeper.getInstance().getEmitTimes().remove(tuple.getActualTupleId());
|
||||
double newAverage = (currentAverage*currentCount + delay)/(currentCount+1);
|
||||
TimeKeeper.getInstance().getLoopIdToCurrentAverage().put(loop.getLoopId(), newAverage);
|
||||
TimeKeeper.getInstance().getLoopIdToCurrentNum().put(loop.getLoopId(), currentCount+1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdownEntity() {
|
||||
|
||||
}
|
||||
|
||||
public int getGatewayDeviceId() {
|
||||
return gatewayDeviceId;
|
||||
}
|
||||
|
||||
public void setGatewayDeviceId(int gatewayDeviceId) {
|
||||
this.gatewayDeviceId = gatewayDeviceId;
|
||||
}
|
||||
|
||||
public GeoLocation getGeoLocation() {
|
||||
return geoLocation;
|
||||
}
|
||||
|
||||
public void setGeoLocation(GeoLocation geoLocation) {
|
||||
this.geoLocation = geoLocation;
|
||||
}
|
||||
|
||||
public int getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(int userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getAppId() {
|
||||
return appId;
|
||||
}
|
||||
|
||||
public void setAppId(String appId) {
|
||||
this.appId = appId;
|
||||
}
|
||||
|
||||
public String getMyActuatorType() {
|
||||
return actuatorType;
|
||||
}
|
||||
|
||||
public void setMyActuatorType(String actuatorType) {
|
||||
this.actuatorType = actuatorType;
|
||||
}
|
||||
|
||||
public MyApplication getApp() {
|
||||
return app;
|
||||
}
|
||||
|
||||
public void setApp(MyApplication app) {
|
||||
this.app = app;
|
||||
}
|
||||
|
||||
public double getLatency() {
|
||||
return latency;
|
||||
}
|
||||
|
||||
public void setLatency(double latency) {
|
||||
this.latency = latency;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user