首页 > 代码库 > 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