package com.limegroup.gnutella.downloader;
import org.limewire.core.api.transfer.SourceInfo;
import org.limewire.util.StringUtils;
import com.limegroup.gnutella.InsufficientDataException;
class SourceDetails implements SourceInfo {
private final String name;
private final float speed;
private final String addr;
private final boolean encrypted;
public SourceDetails(DownloadWorker worker) {
HTTPDownloader downloader = worker.getDownloader();
if(downloader != null) {
String agent = downloader.getServer();
if(!StringUtils.isEmpty(agent)) {
name = agent;
} else {
name = worker.getRFD().getVendor();
}
encrypted = downloader.isEncrypted();
float measured = 0;
try {
measured = downloader.getMeasuredBandwidth()*1024;
} catch(InsufficientDataException id) {}
speed = measured;
} else {
speed = 0;
encrypted = false;
name = worker.getRFD().getVendor();
}
addr = worker.getRFD().getAddress().getAddressDescription();
}
@Override
public String getClientName() {
return name;
}
@Override
public float getDownloadSpeed() {
return speed;
}
@Override
public String getIPAddress() {
return addr;
}
@Override
public float getUploadSpeed() {
return 0;
}
@Override
public boolean isEncyrpted() {
return encrypted;
}
}