/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
*
* Copyright (c) 2009-2010, The University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.core;
import java.util.Calendar;
/**
* 里面有一个记录用户数量的字段,调用processevent方法,
* 当用户数量为0时,或者一个用户要求终止仿真时,然后通知CIS实体结束
* CloudimShutdown waits for termination of all CloudSim user entities to
* determine the end of simulation.
* <p>
* This class will be created by CloudSim upon initialisation of the simulation,
* i.e. done via <tt>CloudSim.init()</tt> method. Hence, do not need to worry
* about creating an object of this class.
* <p>
* This object signals the end of simulation to CloudInformationService (GIS)
* entity.
*
* @author Manzur Murshed
* @author Rajkumar Buyya
* @since CloudSim Toolkit 1.0
*/
public class CloudSimShutdown extends SimEntity {
/**
* The num user.
* 字段:用户数量
* */
private int numUser;
/**
* 初始化函数参数:名字和用户数量
* Allocates a new CloudSimShutdown object.
* <p>
* The total number of
* grid user entity plays an important role to determine whether all
* hostList should be shut down or not.
* If one or more users are still not finish, then the hostList will not
* be shut down. Therefore, it is important to give a correct number of
* total grid user entity. Otherwise, CloudSim program will hang or encounter
* a weird behaviour.
*
* @param name the name to be associated with this entity (as
* required by SimEntity class)
* @param numUser total number of grid user entity
* @throws Exception This happens when creating this entity before
* initialising CloudSim package or this entity name is
* <tt>null</tt> or empty
* @see gridsim.CloudSim#init(int, Calendar, boolean)
* @pre name != null
* @pre numUser >= 0
* @post $none
*/
public CloudSimShutdown(String name, int numUser) throws Exception {
// NOTE: This entity doesn't use any I/O port.
//super(name, CloudSimTags.DEFAULT_BAUD_RATE);
super(name);
this.numUser = numUser;
}
/**
* 处理事件,当用户数为0时,或者某一个用户要求终止仿真时,终止。
* The main method that shuts down hostList and Cloud Information
* Service (GIS). In addition, this method writes down a report at the
* end of a simulation based on <tt>reportWriterName</tt> defined in
* the Constructor.
* <br>
* <b>NOTE:</b> This method shuts down grid hostList and GIS entities
* either <tt>AFTER</tt> all grid users have been shut down or
* an entity requires an abrupt end of the whole simulation.
* In the first case, the number of grid users given in the
* Constructor <tt>must</tt> be correct. Otherwise, CloudSim
* package hangs forever or it does not terminate properly.
*
* @param ev the ev
* @pre $none
* @post $none
*/
@Override
public void processEvent(SimEvent ev) {
numUser--;
if(numUser == 0 || ev.getTag() == CloudSimTags.ABRUPT_END_OF_SIMULATION) {
CloudSim.abruptallyTerminate();
}
}
/* (non-Javadoc)
* @see org.cloudbus.cloudsim.core.SimEntity#startEntity()
*/
@Override
public void startEntity() {
// do nothing
}
/* (non-Javadoc)
* @see org.cloudbus.cloudsim.core.SimEntity#shutdownEntity()
*/
@Override
public void shutdownEntity() {
// do nothing
}
}
云计算仿真工具中文注释CloudSimShutdown.java
最新推荐文章于 2022-05-08 16:56:09 发布