multisource downloads, untested

This commit is contained in:
Zlatin Balevsky
2019-06-04 03:30:55 +01:00
parent e7240dcb6f
commit 3cea1870cd
7 changed files with 138 additions and 69 deletions

View File

@@ -71,8 +71,15 @@ class MainFrameController {
def result = selectedResult()
if (result == null)
return // TODO disable button
def file = new File(application.context.get("muwire-settings").downloadLocation, result.name)
core.eventBus.publish(new UIDownloadEvent(result : result, target : file))
def file = new File(application.context.get("muwire-settings").downloadLocation, result.name)
def selected = builder.getVariable("result-tabs").getSelectedComponent()
def group = selected.getClientProperty("mvc-group")
def resultsBucket = group.model.hashBucket[result.infohash]
core.eventBus.publish(new UIDownloadEvent(result : resultsBucket, target : file))
}
@ControllerAction

View File

@@ -21,7 +21,7 @@ class SearchTabModel {
Core core
String uuid
def results = []
def hashCount = [:]
def hashBucket = [:]
void mvcGroupInit(Map<String, String> args) {
@@ -35,11 +35,12 @@ class SearchTabModel {
void handleResult(UIResultEvent e) {
runInsideUIAsync {
Integer count = hashCount.get(e.infohash)
if (count == null)
count = 0
count++
hashCount[e.infohash] = count
def bucket = hashBucket.get(e.infohash)
if (bucket == null) {
bucket = []
hashBucket[e.infohash] = bucket
}
bucket << e
results << e
JTable table = builder.getVariable("results-table")

View File

@@ -104,11 +104,7 @@ class MainFrameView {
int done = row.downloader.donePieces()
"$done/$pieces pieces"
})
closureColumn(header: "Piece", type: String, read: { row ->
int position = row.downloader.positionInPiece()
int pieceSize = row.downloader.pieceSize // TODO: fix for last piece
"$position/$pieceSize bytes"
})
closureColumn(header: "Sources", type: Integer, read : {row -> row.downloader.activeWorkers.size()})
closureColumn(header: "Speed (bytes/second)", type:Integer, read :{row -> row.downloader.speed()})
}
}

View File

@@ -31,7 +31,7 @@ class SearchTabView {
tableModel(list: model.results) {
closureColumn(header: "Name", type: String, read : {row -> row.name})
closureColumn(header: "Size", preferredWidth: 150, type: Long, read : {row -> row.size})
closureColumn(header: "Sources", type : Integer, read : { row -> model.hashCount[row.infohash]})
closureColumn(header: "Sources", type : Integer, read : { row -> model.hashBucket[row.infohash].size()})
closureColumn(header: "Sender", type: String, read : {row -> row.sender.getHumanReadableName()})
closureColumn(header: "Trust", type: String, read : {row ->
model.core.trustService.getLevel(row.sender.destination)