Time estimation: Use a consistent check for size dependence. #2328

This commit is contained in:
Christian Kamm 2015-01-30 09:17:15 +01:00
parent 509b83e73e
commit 7d68c628db
4 changed files with 21 additions and 14 deletions

View file

@ -631,7 +631,7 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf
qint64 curItemProgress = -1; // -1 means finished qint64 curItemProgress = -1; // -1 means finished
quint64 biggerItemSize = -1; quint64 biggerItemSize = -1;
foreach(const Progress::Info::ProgressItem &citm, progress._currentItems) { foreach(const Progress::Info::ProgressItem &citm, progress._currentItems) {
if (curItemProgress == -1 || (Progress::isSizeDependent(citm._item._instruction) if (curItemProgress == -1 || (Progress::isSizeDependent(citm._item)
&& biggerItemSize < citm._item._size)) { && biggerItemSize < citm._item._size)) {
curItemProgress = citm._completedSize; curItemProgress = citm._completedSize;
curItem = citm._item; curItem = citm._item;
@ -648,7 +648,7 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf
QString fileProgressString; QString fileProgressString;
if (Progress::isSizeDependent(curItem._instruction)) { if (Progress::isSizeDependent(curItem)) {
QString s1 = Utility::octetsToString( curItemProgress ); QString s1 = Utility::octetsToString( curItemProgress );
QString s2 = Utility::octetsToString( curItem._size ); QString s2 = Utility::octetsToString( curItem._size );
quint64 estimatedBw = progress.getFileEstimate(curItem).getEstimatedBandwidth(); quint64 estimatedBw = progress.getFileEstimate(curItem).getEstimatedBandwidth();

View file

@ -224,7 +224,7 @@ QTreeWidgetItem* ProtocolWidget::createCompletedTreewidgetItem(const QString& fo
icon = Theme::instance()->syncStateIcon(SyncResult::Problem); icon = Theme::instance()->syncStateIcon(SyncResult::Problem);
} }
if (Progress::isSizeDependent(item._instruction)) { if (Progress::isSizeDependent(item)) {
columns << Utility::octetsToString( item._size ); columns << Utility::octetsToString( item._size );
} }

View file

@ -32,9 +32,12 @@ namespace OCC {
namespace Progress namespace Progress
{ {
/** Return true is the size need to be taken in account in the total amount of time */ /** Return true is the size need to be taken in account in the total amount of time */
inline bool isSizeDependent(csync_instructions_e instruction) { static inline bool isSizeDependent(const SyncFileItem & item)
return instruction == CSYNC_INSTRUCTION_CONFLICT || instruction == CSYNC_INSTRUCTION_SYNC {
|| instruction == CSYNC_INSTRUCTION_NEW; return ! item._isDirectory && (
item._instruction == CSYNC_INSTRUCTION_CONFLICT
|| item._instruction == CSYNC_INSTRUCTION_SYNC
|| item._instruction == CSYNC_INSTRUCTION_NEW);
} }
@ -50,7 +53,13 @@ namespace Progress
quint64 _completedSize; quint64 _completedSize;
// Should this be in a separate file? // Should this be in a separate file?
struct EtaEstimate { struct EtaEstimate {
EtaEstimate() : _startedTime(QDateTime::currentMSecsSinceEpoch()), _agvEtaMSecs(0),_effectivProgressPerSec(0),_sampleCount(1) {} EtaEstimate()
: _startedTime(QDateTime::currentMSecsSinceEpoch())
, _agvEtaMSecs(0)
, _effectivProgressPerSec(0)
, _sampleCount(1)
{
}
static const int MAX_AVG_DIVIDER=60; static const int MAX_AVG_DIVIDER=60;
static const int INITAL_WAIT_TIME=5; static const int INITAL_WAIT_TIME=5;
@ -115,11 +124,9 @@ namespace Progress
void setProgressComplete(const SyncFileItem &item) { void setProgressComplete(const SyncFileItem &item) {
_currentItems.remove(item._file); _currentItems.remove(item._file);
_completedFileCount += item._affectedItems; _completedFileCount += item._affectedItems;
if (!item._isDirectory) { if (Progress::isSizeDependent(item)) {
if (Progress::isSizeDependent(item._instruction)) { _completedSize += item._size;
_completedSize += item._size; }
}
}
_lastCompletedItem = item; _lastCompletedItem = item;
this->updateEstimation(); this->updateEstimation();
} }
@ -142,7 +149,7 @@ namespace Progress
quint64 completedSize() const { quint64 completedSize() const {
quint64 r = _completedSize; quint64 r = _completedSize;
foreach(const ProgressItem &i, _currentItems) { foreach(const ProgressItem &i, _currentItems) {
if (!i._item._isDirectory) if (Progress::isSizeDependent(i._item))
r += i._completedSize; r += i._completedSize;
} }
return r; return r;

View file

@ -496,7 +496,7 @@ int SyncEngine::treewalkFile( TREE_WALK_FILE *file, bool remote )
if (!item->_isDirectory) { if (!item->_isDirectory) {
_progressInfo._totalFileCount++; _progressInfo._totalFileCount++;
if (Progress::isSizeDependent(file->instruction)) { if (Progress::isSizeDependent(item)) {
_progressInfo._totalSize += file->size; _progressInfo._totalSize += file->size;
} }
} else if (file->instruction != CSYNC_INSTRUCTION_NONE) { } else if (file->instruction != CSYNC_INSTRUCTION_NONE) {