01: /*
02: * This file is part of DrFTPD, Distributed FTP Daemon.
03: *
04: * DrFTPD is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * DrFTPD is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU General Public License for more details.
13: *
14: * You should have received a copy of the GNU General Public License
15: * along with DrFTPD; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18: package org.drftpd.slaveselection;
19:
20: import java.io.IOException;
21: import java.util.Collection;
22:
23: import net.sf.drftpd.NoAvailableSlaveException;
24: import net.sf.drftpd.master.BaseFtpConnection;
25: import net.sf.drftpd.mirroring.Job;
26:
27: import org.drftpd.GlobalContext;
28: import org.drftpd.master.RemoteSlave;
29: import org.drftpd.remotefile.LinkedRemoteFileInterface;
30:
31: /**
32: * @author mog
33: * @version $Id: SlaveSelectionManagerInterface.java 936 2005-01-31 22:25:52Z mog $
34: */
35: public interface SlaveSelectionManagerInterface {
36: public abstract void reload() throws IOException;
37:
38: /**
39: * Checksums call us with null BaseFtpConnection.
40: */
41: public RemoteSlave getASlave(Collection<RemoteSlave> rslaves,
42: char direction, BaseFtpConnection conn,
43: LinkedRemoteFileInterface file)
44: throws NoAvailableSlaveException;
45:
46: public GlobalContext getGlobalContext();
47:
48: public RemoteSlave getASlaveForJobDownload(Job job)
49: throws NoAvailableSlaveException;
50:
51: public RemoteSlave getASlaveForJobUpload(Job job,
52: RemoteSlave sourceSlave) throws NoAvailableSlaveException;
53: }
|