1 18 package org.drftpd.slaveselection.filter; 19 20 import java.net.InetAddress ; 21 import java.util.Iterator ; 22 import java.util.Properties ; 23 24 import net.sf.drftpd.Bytes; 25 import net.sf.drftpd.SlaveUnavailableException; 26 import net.sf.drftpd.master.config.FtpConfig; 27 import net.sf.drftpd.master.usermanager.User; 28 import net.sf.drftpd.remotefile.LinkedRemoteFileInterface; 29 30 45 public class MinfreespaceFilter extends Filter { 46 private long _minfreespace; 47 48 private float _multiplier; 49 50 public MinfreespaceFilter(FilterChain ssm, int i, Properties p) { 51 _multiplier = 53 BandwidthFilter.parseMultiplier( 54 FtpConfig.getProperty(p, i + ".multiplier")); 55 _minfreespace = 56 Bytes.parseBytes(FtpConfig.getProperty(p, i + ".minfreespace")); 57 } 58 59 public void process( 60 ScoreChart scorechart, 61 User user, 62 InetAddress source, 63 char direction, 64 LinkedRemoteFileInterface file) { 65 for (Iterator iter = scorechart.getSlaveScores().iterator(); 66 iter.hasNext(); 67 ) { 68 ScoreChart.SlaveScore score = (ScoreChart.SlaveScore) iter.next(); 69 long df; 70 try { 71 df = score.getRSlave().getStatus().getDiskSpaceAvailable(); 72 if (df < _minfreespace) { 73 if (_multiplier == 0) { 74 iter.remove(); 75 } else { 76 score.addScore( 77 - (long) ((_minfreespace - df) * _multiplier)); 78 } 79 } 80 } catch (SlaveUnavailableException e) { 81 iter.remove(); 82 } 83 } 84 } 85 } 86 | Popular Tags |