package lbms.plugins.mldht.azureus;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
import org.gudy.azureus2.plugins.download.Download;
/**
* @author Damokles
*
*/
public class TrackedTorrent implements Delayed {
private long timestamp;
private Download download;
private boolean announcing;
public TrackedTorrent (Download download) {
this.download = download;
}
public TrackedTorrent (Download download, long delay) {
this.download = download;
setDelay(delay);
}
/*
* (non-Javadoc)
*
* @see java.util.concurrent.Delayed#getDelay(java.util.concurrent.TimeUnit)
*/
public long getDelay (TimeUnit unit) {
return unit.convert(timestamp - System.currentTimeMillis(),
TimeUnit.MILLISECONDS);
}
/*
* (non-Javadoc)
*
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo (TrackedTorrent o) {
long x = getDelay(TimeUnit.MILLISECONDS)
- o.getDelay(TimeUnit.MILLISECONDS);
if (x > 0) {
return 1;
} else if (x < 0) {
return -1;
}
return 0;
}
/*
* (non-Javadoc)
*
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo (Delayed o) {
long x = getDelay(TimeUnit.MILLISECONDS)
- o.getDelay(TimeUnit.MILLISECONDS);
if (x > 0) {
return 1;
} else if (x < 0) {
return -1;
}
return 0;
}
/**
* @return the announcing
*/
public boolean isAnnouncing () {
return announcing;
}
/**
* @param announcing the announcing to set
*/
public void setAnnouncing (boolean announcing) {
this.announcing = announcing;
}
public void setDelay (long delay) {
timestamp = System.currentTimeMillis() + delay;
}
public void setDelay (long delay, TimeUnit unit) {
timestamp = System.currentTimeMillis()
+ TimeUnit.MILLISECONDS.convert(delay, unit);
}
/**
* @return the download
*/
public Download getDownload () {
return download;
}
}