首页 > 代码库 > CloudSim中的实例之SimEvent
CloudSim中的实例之SimEvent
package org.cloudbus.cloudsim.core;/* 在实体之间传递的仿真事件 */public class SimEvent implements Cloneable,Comparable<SimEvent>{ private final int etype; //内部事件类型 private final double time; //事件发生时间 private double endWaitingTime; //事件从队列移除时间 private int entSrc; //调度事件实体ID private int entDst; //事件将发送给实体的ID private final int tag; //用户定义的事件类型 private final Object data; //事件携带数据 private long serial=-1; //??? //内部事件类型 public static final int ENULL=0; public static final int SEND=1; public static final int HOLD_DONE=2; public static final int CREATE=3; //默认构造函数 public SimEvent(){ etype=0; this.time=-1L; endWaitingTime=-1.0; entSrc=-1; entDst=-1; this.tag=-1; data=null; } //重载构造函数 SimEvent(int evtype,double time,int src,int dest,int tag,Object edata){ etype=evtype; this.time=time; entSrc=src; entDst=dest; this.tag=tag; data=edata; } //重载构造函数 SimEvent(int evtype,double time,int src){ etype=evtype; this.time=time; entSrc=src; entDst=-1; this.tag=-1; data=null; } protected void setSerial(long serial){ this.serial=serial; } //设置事件在队列中等待完成时间 protected void setEndWaitingTime(double end_waiting_time){ this.endWaitingTime=end_waiting_time; } public String toString(){ return "Event tag = "+tag+" source = " +CloudSim.getEntity(this.entSrc).getName() +" destination = " + CloudSim.getEntity(this.entDst).getName(); } //内部类型 public int getType(){ return etype; } public int compareTo(SimEvent event){ //问题:比较有什么用?? if(event==null){ return 1; //事件为空 }else if(time<event.time){ return -1; }else if(time>event.time){ return 1; }else if(serial<event.serial){ return -1; }else if(this==event){ return 0; }else{ return 1; } } //接收事件的实体ID public int getDestination(){ return entDst; } //调度事件的实体ID public int getSource(){ return entSrc; } //事件从队列移除的仿真时间 public double endWaitingTime{ return endWaitingTime; } //用户自定义的事件标签 public int type(){ return tag; } //调度事件的ID public int scheduledBy(){ return entSrc; } //用户自定义的事件标签 public int getTag(){ return tag; } //事件中传递的数据 public Object getData(){ return data; } //准确复制事件 public Object clone(){ return new SimEvent(etype,time,entSrc,entDst,tag,data); } //事件来源实体 public void setSource(int s){ entSrc=s; } //事件目的实体 public void setDestination(int d){ entDst=d; }}
CloudSim中的实例之SimEvent
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。