1 18 package org.drftpd.mirroring.archivetypes; 19 20 import java.io.FileInputStream ; 21 import java.io.IOException ; 22 import java.util.ArrayList ; 23 import java.util.HashSet ; 24 import java.util.Iterator ; 25 import java.util.Properties ; 26 27 import net.sf.drftpd.event.listeners.Archive; 28 import net.sf.drftpd.master.config.FtpConfig; 29 import net.sf.drftpd.mirroring.Job; 30 import net.sf.drftpd.remotefile.LinkedRemoteFileInterface; 31 32 import org.apache.log4j.Logger; 33 import org.drftpd.mirroring.ArchiveType; 34 import org.drftpd.sections.SectionInterface; 35 36 40 public class MoveReleaseToMostFreeSlaves extends ArchiveType { 41 private static final Logger logger = Logger.getLogger(MoveReleaseToMostFreeSlaves.class); 42 private int _numOfSlaves; 43 44 public MoveReleaseToMostFreeSlaves(Archive archive, SectionInterface section) { 45 super(archive,section); 46 Properties props = new Properties (); 47 try { 48 props.load(new FileInputStream ("conf/archive.conf")); 49 } catch (IOException e) { 50 throw new RuntimeException (e); 51 } 52 try { 53 _numOfSlaves = Integer.parseInt(FtpConfig.getProperty(props,getSection().getName() + ".numOfSlaves")); 54 } catch (NullPointerException e) { 55 _numOfSlaves = 1; 56 } 57 } 58 59 public void cleanup(ArrayList jobList) { 60 for (Iterator iter = jobList.iterator(); iter.hasNext();) { 61 Job job = (Job) iter.next(); 62 job.getFile().deleteOthers(getRSlaves()); 63 } 64 } 65 66 public HashSet findDestinationSlaves() { 67 HashSet set = _parent.getConnectionManager().getSlaveManager().findSlavesBySpace(_numOfSlaves,new HashSet (), false); 68 if (set.isEmpty()) 69 return null; 70 return set; 71 } 72 73 public void waitForSendOfFiles(ArrayList jobQueue) { 74 while (true) { 75 for (Iterator iter = jobQueue.iterator(); iter.hasNext();) { 76 Job job = (Job) iter.next(); 77 if (job.isDone()) { 78 logger.debug( 79 "File " 80 + job.getFile().getPath() 81 + " is done being sent"); 82 iter.remove(); 83 } 84 } 85 try { 86 Thread.sleep(10000); 87 } catch (InterruptedException e) { 88 } 89 if (jobQueue.isEmpty()) { 90 break; 91 } 92 } 93 } 94 95 98 99 protected boolean isArchivedDir(LinkedRemoteFileInterface lrf) 100 throws IncompleteDirectoryException, OfflineSlaveException { 101 return isArchivedToXSlaves(lrf,_numOfSlaves); 102 } 103 public String toString() { 104 return "MoveReleaseToMostFreeSlaves=[directory=[" + getDirectory().getPath() + "]dest=[" + outputSlaves(getRSlaves()) + "]numOfSlaves=[" + _numOfSlaves + "]]"; 105 } 106 107 } 108 | Popular Tags |