mirror of
https://github.com/9001/copyparty.git
synced 2025-08-24 04:12:24 -06:00
faster upload of small files on high-latency nets
This commit is contained in:
parent
434823f6f0
commit
53d92cc0a6
|
@ -1555,11 +1555,11 @@ function up2k_init(subtle) {
|
||||||
st.busy.handshake.length)
|
st.busy.handshake.length)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (t.n - st.car > 8)
|
if (t.n - st.car > Math.max(8, parallel_uploads))
|
||||||
// prevent runahead from a stuck upload (slow server hdd)
|
// prevent runahead from a stuck upload (slow server hdd)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ((uc.multitask ? 1 : 0) <
|
if ((uc.multitask ? parallel_uploads : 0) <
|
||||||
st.todo.upload.length +
|
st.todo.upload.length +
|
||||||
st.busy.upload.length)
|
st.busy.upload.length)
|
||||||
return false;
|
return false;
|
||||||
|
@ -1571,21 +1571,22 @@ function up2k_init(subtle) {
|
||||||
if (!parallel_uploads)
|
if (!parallel_uploads)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
var nhs = st.todo.handshake.length + st.busy.handshake.length,
|
||||||
|
nup = st.todo.upload.length + st.busy.upload.length;
|
||||||
|
|
||||||
if (uc.multitask) {
|
if (uc.multitask) {
|
||||||
|
if (nhs + nup < parallel_uploads)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (!uc.az)
|
if (!uc.az)
|
||||||
return st.todo.handshake.length + st.busy.handshake.length < 2;
|
return nhs < 2;
|
||||||
|
|
||||||
var ahead = st.bytes.hashed - st.bytes.finished,
|
var ahead = st.bytes.hashed - st.bytes.finished,
|
||||||
nmax = ahead < biggest_file / 8 ? 32 : 16;
|
nmax = ahead < biggest_file / 8 ? 32 : 16;
|
||||||
|
|
||||||
return ahead < biggest_file &&
|
return ahead < biggest_file && nhs < nmax;
|
||||||
st.todo.handshake.length + st.busy.handshake.length < nmax;
|
|
||||||
}
|
}
|
||||||
return handshakes_permitted() && 0 ==
|
return handshakes_permitted() && 0 == nhs + nup;
|
||||||
st.todo.handshake.length +
|
|
||||||
st.busy.handshake.length +
|
|
||||||
st.todo.upload.length +
|
|
||||||
st.busy.upload.length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var tasker = (function () {
|
var tasker = (function () {
|
||||||
|
@ -1750,20 +1751,22 @@ function up2k_init(subtle) {
|
||||||
var sr = uc.fsearch,
|
var sr = uc.fsearch,
|
||||||
ok = pvis.ctr.ok,
|
ok = pvis.ctr.ok,
|
||||||
ng = pvis.ctr.ng,
|
ng = pvis.ctr.ng,
|
||||||
|
spd = Math.floor(st.bytes.finished / st.time.busy),
|
||||||
|
suf = '\n\n{0} @ {1}/s'.format(shumantime(st.time.busy), humansize(spd)),
|
||||||
t = uc.ask_up ? 0 : 10;
|
t = uc.ask_up ? 0 : 10;
|
||||||
|
|
||||||
console.log('toast', ok, ng);
|
console.log('toast', ok, ng);
|
||||||
|
|
||||||
if (ok && ng)
|
if (ok && ng)
|
||||||
toast.warn(t, uc.nagtxt = (sr ? L.ur_sm : L.ur_um).format(ok, ng));
|
toast.warn(t, uc.nagtxt = (sr ? L.ur_sm : L.ur_um).format(ok, ng) + suf);
|
||||||
else if (ok > 1)
|
else if (ok > 1)
|
||||||
toast.ok(t, uc.nagtxt = (sr ? L.ur_aso : L.ur_auo).format(ok));
|
toast.ok(t, uc.nagtxt = (sr ? L.ur_aso : L.ur_auo).format(ok) + suf);
|
||||||
else if (ok)
|
else if (ok)
|
||||||
toast.ok(t, uc.nagtxt = sr ? L.ur_1so : L.ur_1uo);
|
toast.ok(t, uc.nagtxt = (sr ? L.ur_1so : L.ur_1uo) + suf);
|
||||||
else if (ng > 1)
|
else if (ng > 1)
|
||||||
toast.err(t, uc.nagtxt = (sr ? L.ur_asn : L.ur_aun).format(ng));
|
toast.err(t, uc.nagtxt = (sr ? L.ur_asn : L.ur_aun).format(ng) + suf);
|
||||||
else if (ng)
|
else if (ng)
|
||||||
toast.err(t, uc.nagtxt = sr ? L.ur_1sn : L.ur_1un);
|
toast.err(t, uc.nagtxt = (sr ? L.ur_1sn : L.ur_1un) + suf);
|
||||||
|
|
||||||
timer.rm(etafun);
|
timer.rm(etafun);
|
||||||
timer.rm(donut.do);
|
timer.rm(donut.do);
|
||||||
|
@ -2553,9 +2556,15 @@ function up2k_init(subtle) {
|
||||||
if (dir.target) {
|
if (dir.target) {
|
||||||
clmod(obj, 'err', 1);
|
clmod(obj, 'err', 1);
|
||||||
var v = Math.floor(parseInt(obj.value));
|
var v = Math.floor(parseInt(obj.value));
|
||||||
if (v < 0 || v > 64 || v !== v)
|
if (v < 0 || v !== v)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (v > 64) {
|
||||||
|
var p = obj.selectionStart;
|
||||||
|
v = obj.value = 64;
|
||||||
|
obj.selectionStart = obj.selectionEnd = p;
|
||||||
|
}
|
||||||
|
|
||||||
parallel_uploads = v;
|
parallel_uploads = v;
|
||||||
swrite('nthread', v);
|
swrite('nthread', v);
|
||||||
clmod(obj, 'err');
|
clmod(obj, 'err');
|
||||||
|
|
Loading…
Reference in a new issue