From 12030effb52705de870c7246cf51737814d88364 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Kupec?= Date: Wed, 25 Nov 2009 17:07:31 +0100 Subject: [PATCH] basic fix for incorrect download speed report (bnc #537870) - TODO: anticipate also Bs, GiBs, etc and/or convince upstream to provide machine readable output --- zypp/media/MediaAria2c.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/zypp/media/MediaAria2c.cc b/zypp/media/MediaAria2c.cc index 66d4a3d..6174dcc 100644 --- a/zypp/media/MediaAria2c.cc +++ b/zypp/media/MediaAria2c.cc @@ -403,6 +403,8 @@ void MediaAria2c::getFileCopy( const Pathname & filename , const Pathname & targ string speedStr = progressLine.substr(left_bound, count); try { current_speed = boost::lexical_cast(speedStr); + // convert to and work with bytes everywhere (bnc #537870) + current_speed *= kibs ? 0x400 : 0x100000; } catch (const std::exception&) { ERR << "Can't parse speed from '" << speedStr << "'" << endl; @@ -416,13 +418,10 @@ void MediaAria2c::getFileCopy( const Pathname & filename , const Pathname & targ // this is basically A: average // ((n-1)A(n-1) + Xn)/n = A(n) average_speed = - (((average_speed_count - 1 )*average_speed) + current_speed) + (((average_speed_count - 1)*average_speed) + current_speed) / average_speed_count; - // note that aria report speed in kBps or MBps, while the report takes Bps - report->progress ( progress, fileurl, - average_speed * (kibs ? 0x400 : 0x10000), - current_speed * (kibs ? 0x400 : 0x10000)); + report->progress ( progress, fileurl, average_speed, current_speed ); // clear the progress line to detect mismatches between // [# and FILE: lines progressLine.clear(); -- 2.7.4