i2psnark:

- Support arbitrary location for torrent data. Save location in
   per-torrent config file. TODO: Fix torrent browse pages
   (ticket #1028)
 - Enhance idle shutdown message
 - Javadocs
This commit is contained in:
zzz
2014-01-27 13:41:38 +00:00
parent 18146daad8
commit 47712a39ac
6 changed files with 138 additions and 47 deletions

View File

@@ -34,6 +34,7 @@ import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.data.Destination;
import net.i2p.util.Log;
import net.i2p.util.SecureFile;
/**
* Main Snark program startup class.
@@ -238,13 +239,21 @@ public class Snark
private volatile boolean _autoStoppable;
/** from main() via parseArguments() single torrent */
/**
* from main() via parseArguments() single torrent
*
* @deprecated unused
*/
Snark(I2PSnarkUtil util, String torrent, String ip, int user_port,
StorageListener slistener, CoordinatorListener clistener) {
this(util, torrent, ip, user_port, slistener, clistener, null, null, null, true, ".");
}
/** single torrent - via router */
/**
* single torrent - via router
*
* @deprecated unused
*/
public Snark(I2PAppContext ctx, Properties opts, String torrent,
StorageListener slistener, boolean start, String rootDir) {
this(new I2PSnarkUtil(ctx), torrent, null, -1, slistener, null, null, null, null, false, rootDir);
@@ -275,11 +284,28 @@ public class Snark
this.startTorrent();
}
/** multitorrent */
/**
* multitorrent
*/
public Snark(I2PSnarkUtil util, String torrent, String ip, int user_port,
StorageListener slistener, CoordinatorListener clistener,
CompleteListener complistener, PeerCoordinatorSet peerCoordinatorSet,
ConnectionAcceptor connectionAcceptor, boolean start, String rootDir)
{
this(util, torrent, ip, user_port, slistener, clistener, complistener,
peerCoordinatorSet, connectionAcceptor, start, rootDir, null);
}
/**
* multitorrent
*
* @param baseFile if null, use rootDir/torrentName; if non-null, use it instead
* @since 0.9.11
*/
public Snark(I2PSnarkUtil util, String torrent, String ip, int user_port,
StorageListener slistener, CoordinatorListener clistener,
CompleteListener complistener, PeerCoordinatorSet peerCoordinatorSet,
ConnectionAcceptor connectionAcceptor, boolean start, String rootDir, File baseFile)
{
if (slistener == null)
slistener = this;
@@ -395,7 +421,14 @@ public class Snark
try
{
activity = "Checking storage";
storage = new Storage(_util, rootDataDir, meta, slistener);
if (baseFile == null) {
String base = Storage.filterName(meta.getName());
if (_util.getFilesPublic())
baseFile = new File(rootDataDir, base);
else
baseFile = new SecureFile(rootDataDir, base);
}
storage = new Storage(_util, baseFile, meta, slistener);
if (completeListener != null) {
storage.check(completeListener.getSavedTorrentTime(this),
completeListener.getSavedTorrentBitField(this));
@@ -1102,8 +1135,14 @@ public class Snark
*/
public void gotMetaInfo(PeerCoordinator coordinator, MetaInfo metainfo) {
try {
String base = Storage.filterName(metainfo.getName());
File baseFile;
if (_util.getFilesPublic())
baseFile = new File(rootDataDir, base);
else
baseFile = new SecureFile(rootDataDir, base);
// The following two may throw IOE...
storage = new Storage(_util, rootDataDir, metainfo, this);
storage = new Storage(_util, baseFile, metainfo, this);
storage.check();
// ... so don't set meta until here
meta = metainfo;