码迷,mamicode.com
首页 > 其他好文 > 详细

CloudSim中的实例之SimEvent

时间:2015-01-25 19:27:43      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/Murcielago/p/4248620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!