/* * 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-2012, The University of Melbourne, Australia */ package org.cloudbus.cloudsim.network.datacenter; import java.util.ArrayList; import org.cloudbus.cloudsim.CloudletScheduler; import org.cloudbus.cloudsim.Vm; /** * NetworkVm class extends {@link Vm} to support simulation of networked datacenters. * It executes actions related to management of packets (sent and received). * * <br/>Please refer to following publication for more details:<br/> * <ul> * <li><a href="http://dx.doi.org/10.1109/UCC.2011.24">Saurabh Kumar Garg and Rajkumar Buyya, NetworkCloudSim: Modelling Parallel Applications in Cloud * Simulations, Proceedings of the 4th IEEE/ACM International Conference on Utility and Cloud * Computing (UCC 2011, IEEE CS Press, USA), Melbourne, Australia, December 5-7, 2011.</a> * </ul> * * @author Saurabh Kumar Garg * @since CloudSim Toolkit 3.0 * @todo Attributes should be private */ public class NetworkVm extends Vm implements Comparable<Object> { /** * List of {@link NetworkCloudlet} of the VM. */ public ArrayList<NetworkCloudlet> cloudletlist; /** * @todo It doesn't appear to be used. */ int type; /** * List of packets received by the VM. */ public ArrayList<HostPacket> recvPktlist; /** * @todo It doesn't appear to be used. */ public double memory; /** * @todo It doesn't appear to be used. */ public boolean flagfree; /** * The time when the VM finished to process its cloudlets. */ public double finishtime; public NetworkVm( int id, int userId, double mips, int pesNumber, int ram, long bw, long size, String vmm, CloudletScheduler cloudletScheduler) { super(id, userId, mips, pesNumber, ram, bw, size, vmm, cloudletScheduler); cloudletlist = new ArrayList<NetworkCloudlet>(); } public boolean isFree() { return flagfree; } @Override public int compareTo(Object arg0) { NetworkVm hs = (NetworkVm) arg0; if (hs.finishtime > finishtime) { return -1; } if (hs.finishtime < finishtime) { return 1; } return 0; } }