mirror of https://github.com/zlatinb/muwire
fix for silent uploader exceptions
parent
e295aa67d5
commit
3160c1a8f3
|
@ -51,4 +51,23 @@ class ContentUploader extends Uploader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return file.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int getProgress() {
|
||||||
|
if (mapped == null)
|
||||||
|
return 0
|
||||||
|
int position = mapped.position()
|
||||||
|
int total = request.getRange().end - request.getRange().start
|
||||||
|
(int)(position * 100.0 / total)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDownloader() {
|
||||||
|
request.downloader.getHumanReadableName()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import java.nio.charset.StandardCharsets
|
||||||
import com.muwire.core.InfoHash
|
import com.muwire.core.InfoHash
|
||||||
import com.muwire.core.connection.Endpoint
|
import com.muwire.core.connection.Endpoint
|
||||||
|
|
||||||
|
import net.i2p.data.Base64
|
||||||
|
|
||||||
class HashListUploader extends Uploader {
|
class HashListUploader extends Uploader {
|
||||||
private final InfoHash infoHash
|
private final InfoHash infoHash
|
||||||
private final HashListRequest request
|
private final HashListRequest request
|
||||||
|
@ -14,6 +16,7 @@ class HashListUploader extends Uploader {
|
||||||
super(endpoint)
|
super(endpoint)
|
||||||
this.infoHash = infoHash
|
this.infoHash = infoHash
|
||||||
mapped = ByteBuffer.wrap(infoHash.getHashList())
|
mapped = ByteBuffer.wrap(infoHash.getHashList())
|
||||||
|
this.request = request
|
||||||
}
|
}
|
||||||
|
|
||||||
void respond() {
|
void respond() {
|
||||||
|
@ -32,4 +35,21 @@ class HashListUploader extends Uploader {
|
||||||
}
|
}
|
||||||
endpoint.getOutputStream().flush()
|
endpoint.getOutputStream().flush()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Hash list for " + Base64.encode(infoHash.getRoot());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized int getProgress() {
|
||||||
|
(int)(mapped.position() * 100.0 / mapped.capacity())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDownloader() {
|
||||||
|
request.downloader.getHumanReadableName()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,13 @@ abstract class Uploader {
|
||||||
return -1
|
return -1
|
||||||
mapped.position()
|
mapped.position()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract String getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an integer between 0 and 100
|
||||||
|
*/
|
||||||
|
abstract int getProgress();
|
||||||
|
|
||||||
|
abstract String getDownloader();
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,16 +160,13 @@ class MainFrameView {
|
||||||
scrollPane (constraints : BorderLayout.CENTER) {
|
scrollPane (constraints : BorderLayout.CENTER) {
|
||||||
table(id : "uploads-table") {
|
table(id : "uploads-table") {
|
||||||
tableModel(list : model.uploads) {
|
tableModel(list : model.uploads) {
|
||||||
closureColumn(header : "Name", type : String, read : {row -> row.file.getName() })
|
closureColumn(header : "Name", type : String, read : {row -> row.getName() })
|
||||||
closureColumn(header : "Progress", type : String, read : { row ->
|
closureColumn(header : "Progress", type : String, read : { row ->
|
||||||
int position = row.getPosition()
|
int percent = row.getProgress()
|
||||||
def range = row.request.getRange()
|
|
||||||
int total = range.end - range.start
|
|
||||||
int percent = (int)((position * 100.0) / total)
|
|
||||||
"$percent%"
|
"$percent%"
|
||||||
})
|
})
|
||||||
closureColumn(header : "Downloader", type : String, read : { row ->
|
closureColumn(header : "Downloader", type : String, read : { row ->
|
||||||
row.request.downloader?.getHumanReadableName()
|
row.getDownloader()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue