show how many pieces the remote side already has

This commit is contained in:
Zlatin Balevsky
2019-06-25 17:44:05 +01:00
parent f2706a4426
commit 2b6b86f903
7 changed files with 33 additions and 6 deletions

View File

@@ -2,5 +2,5 @@ package com.muwire.core.upload
class ContentRequest extends Request {
Range range
boolean have
int have
}

View File

@@ -105,4 +105,14 @@ class ContentUploader extends Uploader {
request.downloader.getHumanReadableName()
}
@Override
public int getDonePieces() {
return request.have;
}
@Override
public int getTotalPieces() {
return mesh.pieces.nPieces;
}
}

View File

@@ -50,6 +50,16 @@ class HashListUploader extends Uploader {
public String getDownloader() {
request.downloader.getHumanReadableName()
}
@Override
public int getDonePieces() {
return 0;
}
@Override
public int getTotalPieces() {
return 1;
}
}

View File

@@ -50,10 +50,10 @@ class Request {
downloader = new Persona(new ByteArrayInputStream(decoded))
}
boolean have = false
int have = 0
if (headers.containsKey("X-Have")) {
def encoded = headers["X-Have"].trim()
have = DataUtil.decodeXHave(encoded).size() > 0
have = DataUtil.decodeXHave(encoded).size()
}
new ContentRequest( infoHash : infoHash, range : new Range(start, end),
headers : headers, downloader : downloader, have : have)

View File

@@ -80,7 +80,7 @@ public class UploadManager {
return
}
if (request.have)
if (request.have > 0)
eventBus.publish(new SourceDiscoveredEvent(infoHash : request.infoHash, source : request.downloader))
Mesh mesh
@@ -205,7 +205,7 @@ public class UploadManager {
return
}
if (request.have)
if (request.have > 0)
eventBus.publish(new SourceDiscoveredEvent(infoHash : request.infoHash, source : request.downloader))
Mesh mesh

View File

@@ -32,4 +32,8 @@ abstract class Uploader {
abstract int getProgress();
abstract String getDownloader();
abstract int getDonePieces();
abstract int getTotalPieces()
}

View File

@@ -185,11 +185,14 @@ class MainFrameView {
closureColumn(header : "Name", type : String, read : {row -> row.getName() })
closureColumn(header : "Progress", type : String, read : { row ->
int percent = row.getProgress()
"$percent% of piece"
"$percent% of piece".toString()
})
closureColumn(header : "Downloader", type : String, read : { row ->
row.getDownloader()
})
closureColumn(header : "Remote Pieces", type : String, read : { row ->
"${row.getDonePieces()}/${row.getTotalPieces()}".toString()
})
}
}
}