TubeLab-App-Android/frostwire-jlibtorrent/src/test/java/com/frostwire/jlibtorrent/demo/PosixTest.java

105 lines
3.3 KiB
Java

package com.frostwire.jlibtorrent.demo;
import com.frostwire.jlibtorrent.AlertListener;
import com.frostwire.jlibtorrent.SessionManager;
import com.frostwire.jlibtorrent.TorrentInfo;
import com.frostwire.jlibtorrent.alerts.AddTorrentAlert;
import com.frostwire.jlibtorrent.alerts.Alert;
import com.frostwire.jlibtorrent.alerts.AlertType;
import com.frostwire.jlibtorrent.alerts.BlockFinishedAlert;
import com.frostwire.jlibtorrent.swig.libtorrent;
import com.frostwire.jlibtorrent.swig.posix_stat_t;
import com.frostwire.jlibtorrent.swig.posix_wrapper;
import java.io.File;
import java.util.concurrent.CountDownLatch;
/**
* @author gubatron
* @author aldenml
*/
public final class PosixTest {
public static void main(String[] args) throws Throwable {
posix_wrapper p = new posix_wrapper() {
@Override
public int open(String path, int flags, int mode) {
System.out.println("open: " + path);
return super.open(path, flags, mode);
}
@Override
public int stat(String path, posix_stat_t buf) {
System.out.println("stat: " + path);
return super.stat(path, buf);
}
@Override
public int mkdir(String path, int mode) {
System.out.println("mkdir: " + path);
return super.mkdir(path, mode);
}
@Override
public int rename(String oldpath, String newpath) {
System.out.println("rename: " + newpath);
return super.rename(oldpath, newpath);
}
@Override
public int remove(String path) {
System.out.println("remove: " + path);
return super.remove(path);
}
};
p.swigReleaseOwnership();
libtorrent.set_posix_wrapper(p);
// comment this line for a real application
args = new String[]{"/Users/aldenml/Downloads/Honey_Larochelle_Hijack_FrostClick_FrostWire_MP3_May_06_2016.torrent"};
File torrentFile = new File(args[0]);
final SessionManager s = new SessionManager();
final CountDownLatch signal = new CountDownLatch(1);
s.addListener(new AlertListener() {
@Override
public int[] types() {
return null;
}
@Override
public void alert(Alert<?> alert) {
AlertType type = alert.type();
switch (type) {
case ADD_TORRENT:
System.out.println("Torrent added");
((AddTorrentAlert) alert).handle().resume();
break;
case BLOCK_FINISHED:
BlockFinishedAlert a = (BlockFinishedAlert) alert;
int p = (int) (a.handle().status().progress() * 100);
System.out.println("Progress: " + p + " for torrent name: " + a.torrentName());
System.out.println(s.stats().totalDownload());
break;
}
}
});
s.start();
TorrentInfo ti = new TorrentInfo(torrentFile);
s.download(ti, torrentFile.getParentFile());
signal.await();
s.stop();
}
}