package com.limegroup.bittorrent;
import org.limewire.bittorrent.Torrent;
import org.limewire.bittorrent.TorrentInfo;
import org.limewire.bittorrent.TorrentPieceState;
import org.limewire.bittorrent.TorrentPiecesInfo;
import org.limewire.core.api.download.DownloadPiecesInfo;
class BTDownloadPiecesInfo implements DownloadPiecesInfo {
private final TorrentPiecesInfo piecesInfo;
private final Torrent torrent;
BTDownloadPiecesInfo(Torrent torrent) {
this.torrent = torrent;
piecesInfo = torrent.getPiecesInfo();
}
@Override
public PieceState getPieceState(int piece) {
return convertPieceState(piecesInfo.getPieceState(piece));
}
@Override
public int getNumPieces() {
return piecesInfo.getNumPieces();
}
@Override
public long getPieceSize() {
TorrentInfo info = torrent.getTorrentInfo();
if (info == null) {
return -1;
}
return torrent.getTorrentInfo().getPieceLength();
}
@Override
public int getNumPiecesCompleted() {
return piecesInfo.getNumPiecesCompleted();
}
private static PieceState convertPieceState(TorrentPieceState state) {
switch(state) {
case ACTIVE :
return PieceState.ACTIVE;
case DOWNLOADED :
return PieceState.DOWNLOADED;
case PARTIAL :
return PieceState.PARTIAL;
case AVAILABLE :
return PieceState.AVAILABLE;
case UNAVAILABLE :
return PieceState.UNAVAILABLE;
default:
throw new IllegalArgumentException("Unknown TorrentPieceState: " + state);
}
}
}