/**
* 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.Iterator;
import org.cloudbus.cloudsim.Cloudlet;
import org.workflowsim.CondorVM;
import org.workflowsim.WorkflowSimTags;
/**
* The FCFS algorithm.
*
* @author Weiwei Chen
* @since WorkflowSim Toolkit 1.0
* @date Apr 9, 2013
*/
public class FCFSSchedulingAlgorithm extends BaseSchedulingAlgorithm {
/**
* The main function
*/
@Override
public void run() {
for (Iterator it = getCloudletList().iterator(); it.hasNext();) {
Cloudlet cloudlet = (Cloudlet) it.next();
boolean stillHasVm = false;
for (Iterator itc = getVmList().iterator(); itc.hasNext();) {
CondorVM vm = (CondorVM) itc.next();
if (vm.getState() == WorkflowSimTags.VM_STATUS_IDLE) {
stillHasVm = true;
vm.setState(WorkflowSimTags.VM_STATUS_BUSY);
cloudlet.setVmId(vm.getId());
getScheduledList().add(cloudlet);
break;
}
}
//no vm available
if (!stillHasVm) {
break;
}
}
}
}