1 18 package org.drftpd.slaveselection.filter; 19 20 import java.net.InetAddress ; 21 import java.rmi.RemoteException ; 22 import java.util.Collection ; 23 import java.util.Iterator ; 24 import java.util.Properties ; 25 26 import net.sf.drftpd.master.usermanager.User; 27 import net.sf.drftpd.remotefile.LinkedRemoteFileInterface; 28 import net.sf.drftpd.slave.SlaveStatus; 29 import net.sf.drftpd.slave.Transfer; 30 31 35 public class ReversebandwidthFilter extends BandwidthFilter { 36 public ReversebandwidthFilter(FilterChain ssm, int i, Properties p) { 37 super(ssm, i, p); 38 } 39 40 public void process( 41 ScoreChart scorechart, 42 User user, 43 InetAddress source, 44 char direction, 45 LinkedRemoteFileInterface file) { 46 char oppositeDirection; 47 if (direction == Transfer.TRANSFER_RECEIVING_UPLOAD) { 48 oppositeDirection = Transfer.TRANSFER_SENDING_DOWNLOAD; 49 } else 50 oppositeDirection = Transfer.TRANSFER_RECEIVING_UPLOAD; 51 52 Collection slavescores = scorechart.getSlaveScores(); 53 for (Iterator iter = slavescores.iterator(); iter.hasNext();) { 54 ScoreChart.SlaveScore score = (ScoreChart.SlaveScore) iter.next(); 55 SlaveStatus status; 56 try { 57 status = score.getRSlave().getStatus(); 58 } catch (Exception e) { 59 if (e instanceof RemoteException ) { 60 score.getRSlave().handleRemoteException( 61 (RemoteException ) e); 62 } 63 iter.remove(); 64 continue; 65 } 66 score.addScore( 67 - (long) 68 (status.getThroughputDirection(oppositeDirection) 69 * _multiplier)); 70 } 71 } 72 73 } 74 | Popular Tags |