⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datagriduser.java

📁 一个非常著名的网格模拟器,能够运行网格调度算法!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    + ".getFileAttribute(): Exception");        }        return fAttr;    }    /**     * Adds a master file to a designated resource     * @param   file    a master file     * @param   resID   a resource ID     * @return <tt>true</tt> if successful, <tt>false</tt> otherwise     */    public boolean addMaster(File file, int resID)    {        if (file == null || resID == -1) {            return false;        }        int fileSize = file.getSizeInByte();        Object[] packet = new Object[2];        packet[0] = file;        packet[1] = myID_;        int tag = DataGridTags.FILE_ADD_MASTER;        super.send(super.output, 0.0, tag, new IO_data(packet,fileSize,resID));        // wait for the result back        tag = DataGridTags.FILE_ADD_MASTER_RESULT;        FilterDataResult type = new FilterDataResult(file.getName(), tag);        Sim_event ev = new Sim_event();        super.sim_get_next(type, ev);        boolean result = false;        try        {            packet = (Object[]) ev.get_data();              // get the data            String resName = GridSim.getEntityName(resID);  // resource name            int msg = ((Integer) packet[2]).intValue();     // get the result            if (msg == DataGridTags.FILE_ADD_SUCCESSFUL)            {                result = true;                System.out.println(super.get_name() + ".addMaster(): " +                        file.getName() + " has been added to " + resName);            }            else {                System.out.println(super.get_name() + ".addMaster(): " +                        "Error in adding " + file.getName() + " to " + resName);            }        }        catch (Exception e)        {            result = false;            System.out.println(super.get_name() + ".addMaster(): Exception");        }        return result;    }    /**     * Makes a replica of the given master file to another resource     * @param   master  a master file     * @param   resID   a resource ID that will be storing the replica file     * @return  <tt>true</tt> if successful, <tt>false</tt> otherwise     */    public boolean replicateFile(File master, int resID)    {        // check for errors first        if (master == null || resID == -1) {            return false;        }        File file = master.makeReplica();   // makes a replica of this file        int fileSize = file.getSizeInByte();    // size of the replica file        Object[] packet = new Object[2];        packet[0] = file;        packet[1] = myID_;        int tag = DataGridTags.FILE_ADD_REPLICA;        super.send(super.output, 0, tag, new IO_data(packet, fileSize, resID));        // wait for ACK        tag = DataGridTags.FILE_ADD_REPLICA_RESULT;        FilterDataResult type = new FilterDataResult(file.getName(), tag);        Sim_event ev = new Sim_event();        super.sim_get_next(type, ev);        boolean result = false;        try        {            packet = (Object[]) ev.get_data();            String resName = GridSim.getEntityName(resID);            String filename = file.getName();            int msg = ((Integer) packet[1]).intValue();            if (msg == DataGridTags.FILE_ADD_SUCCESSFUL)            {                result = true;                System.out.println(super.get_name() + ".replicateFile(): " +                        filename + " has been replicated to " + resName);            }            else {                System.out.println(super.get_name() + ".replicateFile(): " +                        "There was an error in replicating " + filename +                        " to " + resName);            }        }        catch (Exception e) {            System.out.println(super.get_name()+".replicateFile(): Exception");            result = false;        }        return result;    }    /**     * Deletes a given file stored in a resource     * @param   filename    a file name     * @param   resID       a resource ID stores the file     * @return <tt>true</tt> if successful, <tt>false</tt> otherwise     */    public boolean deleteFile(String filename, int resID)    {        // check for errors first        if (resID == -1 || filename == null) {            return false;        }        Object[] packet = new Object[2];        packet[0] = filename;        packet[1] = myID_;        // send the event        super.send(super.output, 0, DataGridTags.FILE_DELETE_REPLICA,                   new IO_data(packet, DataGridTags.PKT_SIZE, resID));        // wait for ACK        int tag = DataGridTags.FILE_DELETE_REPLICA_RESULT;        FilterDataResult type = new FilterDataResult(filename, tag);        Sim_event ev = new Sim_event();        super.sim_get_next(type, ev);        boolean result = false;        try        {            packet = (Object[]) ev.get_data();            String resName = GridSim.getEntityName(resID);            int msg = ((Integer) packet[1]).intValue();            if (msg == DataGridTags.FILE_DELETE_SUCCESSFUL) {                result = true;                System.out.println(super.get_name() + ".deleteFile(): " +                        filename + " has been deleted from " + resName);            }            else {                System.out.println(super.get_name() + ".deleteFile(): " +                        "There was an error in deleting " + filename +                        " from " + resName);            }        }        catch (Exception e) {            System.out.println(super.get_name() + ".deleteFile(): Exception");            result = false;        }        return result;    }    /**     * Deletes a master file stored in a resource     * @param   filename    a file name     * @param   resID       a resource ID stores the file     * @return <tt>true</tt> if successful, <tt>false</tt> otherwise     */    public boolean deleteMaster(String filename, int resID)    {        // check for errors first        if (resID == -1 || filename == null) {            return false;        }        Object[] packet = new Object[2];        packet[0] = filename;        packet[1] = myID_;        // send the event        super.send(super.output, 0, DataGridTags.FILE_DELETE_MASTER,                   new IO_data(packet, DataGridTags.PKT_SIZE, resID));        // wait for ACK        int tag = DataGridTags.FILE_DELETE_MASTER_RESULT;        FilterDataResult type = new FilterDataResult(filename, tag);        Sim_event ev = new Sim_event();        super.sim_get_next(type, ev);        boolean result = false;        try        {            packet = (Object[]) ev.get_data();            String resName = GridSim.getEntityName(resID);            int msg = ((Integer) packet[1]).intValue();            if (msg == DataGridTags.FILE_DELETE_SUCCESSFUL) {                result = true;                System.out.println(super.get_name() + ".deleteMaster(): " +                        filename + " has been deleted from " + resName);            }            else {                System.out.println(super.get_name() + ".deleteMaster(): " +                        "There was an error in deleting " + filename +                        " from " + resName);            }        }        catch (Exception e) {            System.out.println(super.get_name() + ".masterFile(): Exception");            result = false;        }        return result;    }            /**     * Gets a list of file attributes from a given filter     * @param   filter  a filtering function     * @return a list of results or <tt>null</tt> if not found     */    public ArrayList getAttributeList(Filter filter)    {        // check for errors first        int rcID = getReplicaCatalogueID();        if (filter == null || rcID == -1) {            return null;        }        ArrayList attrList = null;        int eventTag = DataGridTags.CTLG_FILTER;        Object[] packet = new Object[2];        packet[0] = filter;        packet[1] = myID_;        // send an event message        super.send(super.output, 0, eventTag,                   new IO_data(packet, DataGridTags.PKT_SIZE, rcID));        // waiting for a response from the RC        Sim_type_p tag = new Sim_type_p(DataGridTags.CTLG_FILTER_DELIVERY);        Sim_event ev = new Sim_event();        super.sim_get_next(tag, ev);    // only look for this type of ack        try {            attrList = (ArrayList) ev.get_data();        }        catch (Exception e) {            attrList = null;            System.out.println(super.get_name() +                    ".getAttributeList(): Exception");        }        return attrList;    }    /**     * Gets a file from a specific resource     * @param   lfn     a logical file name     * @param   resID   a resource ID that contains the file     * @return a File object or <tt>null</tt> if not found     */    public File getFile(String lfn, int resID)    {        if (lfn == null || resID == -1) {            return null;        }        // sends a request to the RC        int eventTag = DataGridTags.FILE_REQUEST;        sendEvent(eventTag, lfn, resID);        // waiting for a response from the resource        Sim_type_p tag = new Sim_type_p(DataGridTags.FILE_DELIVERY);        Sim_event ev = new Sim_event();        super.sim_get_next(tag, ev);    // only look for this type of ack        File file = null;        try {            file = (File) ev.get_data();        }        catch (Exception e) {            file = null;            System.out.println(super.get_name() + ".getFile(): Exception");        }        return file;    }    /**     * Gets a full name of the given file.     * When a user requests an operation with a filename, it usually means a     * common name. But in the grid this file is known as "common     * name+uniqueID", e.g. test4 (common name is "test" and uniqueID is "4").     * This function returns the name upon which the file is known in the grid.     *     * @param filename  a file name     * @return the full filename of the file (i.e. filename+uniqueID) or     *         <tt>null</tt> if empty     */    public String getFullFilename(String filename)    {        ArrayList list = getAttributeList(new FileNameFilter(filename));        if (list != null && list.size() > 0) {            FileAttribute att = (FileAttribute) list.get(0);            return att.getName();        }        return null;    }    /**     * Sends a new event to a resource     * @param eventTag  an event tag ID     * @param lfn       a logical file name     * @param resID     a resource ID     */    private void sendEvent(int eventTag, String lfn, int resID)    {        int size = lfn.length();        if (size < DataGridTags.PKT_SIZE) {            size = DataGridTags.PKT_SIZE;        }        Object[] packet = new Object[2];        packet[0] = lfn;        packet[1] = myID_;        // send a message        super.send(super.output, 0, eventTag, new IO_data(packet,size,resID));    }} // end class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -