?? datagriduser.java
字號:
+ ".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 + -