// Path: src/edu/boun/edgecloudsim/edge_client/Task.java
// public class Task extends Cloudlet {
// 	private Location submittedLocation;
// 	private double creationTime;
// 	private int type;
// 	private int mobileDeviceId;
// 	private int hostIndex;
// 	private int vmIndex;
// 	private int datacenterId;
// 
// 	public Task(int _mobileDeviceId, int cloudletId, long cloudletLength, int pesNumber,
// 			long cloudletFileSize, long cloudletOutputSize,
// 			UtilizationModel utilizationModelCpu,
// 			UtilizationModel utilizationModelRam,
// 			UtilizationModel utilizationModelBw) {
// 		super(cloudletId, cloudletLength, pesNumber, cloudletFileSize,
// 				cloudletOutputSize, utilizationModelCpu, utilizationModelRam,
// 				utilizationModelBw);
// 		
// 		mobileDeviceId = _mobileDeviceId;
// 		creationTime = CloudSim.clock();
// 	}
// 
// 	
// 	public void setSubmittedLocation(Location _submittedLocation){
// 		submittedLocation =_submittedLocation;
// 	}
// 
// 	public void setAssociatedDatacenterId(int _datacenterId){
// 		datacenterId=_datacenterId;
// 	}
// 	
// 	public void setAssociatedHostId(int _hostIndex){
// 		hostIndex=_hostIndex;
// 	}
// 
// 	public void setAssociatedVmId(int _vmIndex){
// 		vmIndex=_vmIndex;
// 	}
// 	
// 	public void setTaskType(int _type){
// 		type=_type;
// 	}
// 
// 	public int getMobileDeviceId(){
// 		return mobileDeviceId;
// 	}
// 	
// 	public Location getSubmittedLocation(){
// 		return submittedLocation;
// 	}
// 	
// 	public int getAssociatedDatacenterId(){
// 		return datacenterId;
// 	}
// 	
// 	public int getAssociatedHostId(){
// 		return hostIndex;
// 	}
// 
// 	public int getAssociatedVmId(){
// 		return vmIndex;
// 	}
// 	
// 	public int getTaskType(){
// 		return type;
// 	}
// 	
// 	public double getCreationTime() {
// 		return creationTime;
// 	}
// }


import org.cloudbus.cloudsim.core.SimEntity;
import edu.boun.edgecloudsim.edge_client.Task;
import org.cloudbus.cloudsim.Vm;

/*
 * Title:        EdgeCloudSim - Edge Orchestrator
 * 
 * Description: 
 * EdgeOrchestrator is an abstract class which is used for selecting VM
 * for each client requests. For those who wants to add a custom 
 * Edge Orchestrator to EdgeCloudSim should extend this class and provide
 * a concrete instance via ScenarioFactory
 *               
 * Licence:      GPL - http://www.gnu.org/copyleft/gpl.html
 * Copyright (c) 2017, Bogazici University, Istanbul, Turkey
 */

package edu.boun.edgecloudsim.edge_orchestrator;



public abstract class EdgeOrchestrator extends SimEntity{
	protected String policy;
	protected String simScenario;
	
	public EdgeOrchestrator(String _policy, String _simScenario){
		super("EdgeOrchestrator");
		policy = _policy;
		simScenario = _simScenario;
	}

	/*
	 * Default Constructor: Creates an empty EdgeOrchestrator
	 */
	public EdgeOrchestrator() {
        	super("EdgeOrchestrator");
	}

	/*
	 * initialize edge orchestrator if needed
	 */

// Path: src/edu/boun/edgecloudsim/edge_client/Task.java
// public class Task extends Cloudlet {
// 	private Location submittedLocation;
// 	private double creationTime;
// 	private int type;
// 	private int mobileDeviceId;
// 	private int hostIndex;
// 	private int vmIndex;
// 	private int datacenterId;
// 
// 	public Task(int _mobileDeviceId, int cloudletId, long cloudletLength, int pesNumber,
// 			long cloudletFileSize, long cloudletOutputSize,
// 			UtilizationModel utilizationModelCpu,
// 			UtilizationModel utilizationModelRam,
// 			UtilizationModel utilizationModelBw) {
// 		super(cloudletId, cloudletLength, pesNumber, cloudletFileSize,
// 				cloudletOutputSize, utilizationModelCpu, utilizationModelRam,
// 				utilizationModelBw);
// 		
// 		mobileDeviceId = _mobileDeviceId;
// 		creationTime = CloudSim.clock();
// 	}
// 
// 	
// 	public void setSubmittedLocation(Location _submittedLocation){
// 		submittedLocation =_submittedLocation;
// 	}
// 
// 	public void setAssociatedDatacenterId(int _datacenterId){
// 		datacenterId=_datacenterId;
// 	}
// 	
// 	public void setAssociatedHostId(int _hostIndex){
// 		hostIndex=_hostIndex;
// 	}
// 
// 	public void setAssociatedVmId(int _vmIndex){
// 		vmIndex=_vmIndex;
// 	}
// 	
// 	public void setTaskType(int _type){
// 		type=_type;
// 	}
// 
// 	public int getMobileDeviceId(){
// 		return mobileDeviceId;
// 	}
// 	
// 	public Location getSubmittedLocation(){
// 		return submittedLocation;
// 	}
// 	
// 	public int getAssociatedDatacenterId(){
// 		return datacenterId;
// 	}
// 	
// 	public int getAssociatedHostId(){
// 		return hostIndex;
// 	}
// 
// 	public int getAssociatedVmId(){
// 		return vmIndex;
// 	}
// 	
// 	public int getTaskType(){
// 		return type;
// 	}
// 	
// 	public double getCreationTime() {
// 		return creationTime;
// 	}
// }


// Path: src/edu/boun/edgecloudsim/edge_orchestrator/EdgeOrchestrator.java
import org.cloudbus.cloudsim.core.SimEntity;
import edu.boun.edgecloudsim.edge_client.Task;
import org.cloudbus.cloudsim.Vm;

/*
 * Title:        EdgeCloudSim - Edge Orchestrator
 * 
 * Description: 
 * EdgeOrchestrator is an abstract class which is used for selecting VM
 * for each client requests. For those who wants to add a custom 
 * Edge Orchestrator to EdgeCloudSim should extend this class and provide
 * a concrete instance via ScenarioFactory
 *               
 * Licence:      GPL - http://www.gnu.org/copyleft/gpl.html
 * Copyright (c) 2017, Bogazici University, Istanbul, Turkey
 */

package edu.boun.edgecloudsim.edge_orchestrator;



public abstract class EdgeOrchestrator extends SimEntity{
	protected String policy;
	protected String simScenario;
	
	public EdgeOrchestrator(String _policy, String _simScenario){
		super("EdgeOrchestrator");
		policy = _policy;
		simScenario = _simScenario;
	}

	/*
	 * Default Constructor: Creates an empty EdgeOrchestrator
	 */
	public EdgeOrchestrator() {
        	super("EdgeOrchestrator");
	}

	/*
	 * initialize edge orchestrator if needed
	 */

	public abstract void initialize();
