compute which pieces are requested

This commit is contained in:
Zlatin Balevsky
2019-06-21 16:09:57 +01:00
parent ab5fea9216
commit 2be9c425f7
2 changed files with 10 additions and 4 deletions

View File

@ -38,8 +38,8 @@ class ContentUploader extends Uploader {
if (range.start >= length || range.end >= length)
satisfiable = false
if (satisfiable) {
int startPiece = length / range.start
int endPiece = length / range.end
int startPiece = range.start / (0x1 << pieceSize)
int endPiece = range.end / (0x1 << pieceSize)
for (int i = startPiece; i < endPiece; i++)
satisfiable &= mesh.pieces.isDownloaded(i)
}

View File

@ -85,16 +85,19 @@ public class UploadManager {
Mesh mesh
File file
int pieceSize
if (downloader != null) {
mesh = meshManager.get(infoHash)
file = downloader.incompleteFile
pieceSize = downloader.pieceSizePow2
} else {
SharedFile sharedFile = sharedFiles.iterator().next();
mesh = meshManager.getOrCreate(request.infoHash, sharedFile.NPieces)
file = sharedFile.file
pieceSize = sharedFile.pieceSize
}
Uploader uploader = new ContentUploader(file, request, e, mesh)
Uploader uploader = new ContentUploader(file, request, e, mesh, pieceSize)
eventBus.publish(new UploadEvent(uploader : uploader))
try {
uploader.respond()
@ -207,16 +210,19 @@ public class UploadManager {
Mesh mesh
File file
int pieceSize
if (downloader != null) {
mesh = meshManager.get(infoHash)
file = downloader.incompleteFile
pieceSize = downloader.pieceSizePow2
} else {
SharedFile sharedFile = sharedFiles.iterator().next();
mesh = meshManager.getOrCreate(request.infoHash, sharedFile.NPieces)
file = sharedFile.file
pieceSize = sharedFile.pieceSize
}
uploader = new ContentUploader(file, request, e, mesh)
uploader = new ContentUploader(file, request, e, mesh, pieceSize)
eventBus.publish(new UploadEvent(uploader : uploader))
try {
uploader.respond()