/**
* Copyright 2012-2013 University Of Southern California
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.workflowsim.scheduling;
import java.util.ArrayList;
import java.util.List;
import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.Vm;
/**
* The base scheduler has implemented the basic features. Every other scheduling method
* should extend from BaseSchedulingAlgorithm but should not directly use it.
*
* @author Weiwei Chen
* @since WorkflowSim Toolkit 1.0
* @date Apr 9, 2013
*/
public abstract class BaseSchedulingAlgorithm implements SchedulingAlgorithmInterface {
/**
* the job list.
*/
private List<? extends Cloudlet> cloudletList;
/**
* the vm list.
*/
private List<? extends Vm> vmList;
/**
* the scheduled job list.
*/
private List< Cloudlet> scheduledList;
/**
* Initialize a BaseSchedulingAlgorithm
*/
public BaseSchedulingAlgorithm() {
this.scheduledList = new ArrayList();
}
/**
* Sets the job list.
*
* @param list
*/
@Override
public void setCloudletList(List list) {
this.cloudletList = list;
}
/**
* Sets the vm list
*
* @param list
*/
@Override
public void setVmList(List list) {
this.vmList = new ArrayList(list);
}
/**
* Gets the job list.
*
* @return the job list
*/
@Override
public List getCloudletList() {
return this.cloudletList;
}
/**
* Gets the vm list
*
* @return the vm list
*/
@Override
public List getVmList() {
return this.vmList;
}
/**
* The main function
* @throws java.lang.Exception
*/
@Override
public abstract void run() throws Exception;
/**
* Gets the scheduled job list
*
* @return job list
*/
@Override
public List getScheduledList() {
return this.scheduledList;
}
}