Skip to content

Commit 44f7f13

Browse files
committed
Fix printing of duration
Qt nowadays brings its own debug operator for std::chrono::duration, ensure we format it when needed
1 parent d60a623 commit 44f7f13

File tree

8 files changed

+40
-23
lines changed

8 files changed

+40
-23
lines changed

src/gui/accountstate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta
449449
QTimer::singleShot(_maintenanceToConnectedDelay + 100ms, this, [this] { AccountState::checkConnectivity(false); });
450450
return;
451451
} else if (_timeSinceMaintenanceOver.duration() < _maintenanceToConnectedDelay) {
452-
qCInfo(lcAccountState) << "AccountState reconnection: only" << _timeSinceMaintenanceOver.duration() << "ms have passed";
452+
qCInfo(lcAccountState) << "AccountState reconnection: only" << _timeSinceMaintenanceOver;
453453
return;
454454
}
455455
}

src/gui/connectionvalidator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ ConnectionValidator::ConnectionValidator(AccountPtr account, QObject *parent)
5050
auto timer = new QTimer(this);
5151
timer->setInterval(30s);
5252
connect(timer, &QTimer::timeout, this,
53-
[this] { qCInfo(lcConnectionValidator) << "ConnectionValidator" << _account->displayNameWithHost() << "still running after" << _duration.duration(); });
53+
[this] { qCInfo(lcConnectionValidator) << "ConnectionValidator" << _account->displayNameWithHost() << "still running after" << _duration; });
5454
timer->start();
5555
}
5656

@@ -201,7 +201,7 @@ void ConnectionValidator::reportResult(Status status)
201201
{
202202
if (OC_ENSURE(!_finished)) {
203203
_finished = true;
204-
qCDebug(lcConnectionValidator) << status << _duration.duration();
204+
qCDebug(lcConnectionValidator) << status << _duration;
205205
Q_EMIT connectionResult(status, _errors);
206206
deleteLater();
207207
}

src/libsync/common/checksums.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ QByteArray ComputeChecksum::computeNow(QIODevice *device, CheckSums::Algorithm a
285285
// const cast to prevent stream to "device"
286286
const auto log = qScopeGuard([device, algorithm, timer = Utility::ChronoElapsedTimer()] {
287287
if (auto file = qobject_cast<QFile *>(device)) {
288-
qCDebug(lcChecksums) << "Finished" << algorithm << "computation for" << file->fileName() << timer.duration();
288+
qCDebug(lcChecksums) << "Finished" << algorithm << "computation for" << file->fileName() << timer;
289289
} else {
290-
qCDebug(lcChecksums) << "Finished" << algorithm << "computation for" << device << timer.duration();
290+
qCDebug(lcChecksums) << "Finished" << algorithm << "computation for" << device << timer;
291291
}
292292
});
293293
switch (algorithm) {

src/libsync/common/chronoelapsedtimer.cpp

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
#include <QtGlobal>
2121

2222
using namespace OCC::Utility;
23+
using namespace std::chrono;
2324

2425
ChronoElapsedTimer::ChronoElapsedTimer(bool start)
25-
: _start(std::chrono::steady_clock::now())
26+
: _start(steady_clock::now())
2627
, _started(start)
2728
{
2829
}
@@ -34,26 +35,38 @@ bool ChronoElapsedTimer::isStarted() const
3435

3536
void ChronoElapsedTimer::reset()
3637
{
37-
_start = std::chrono::steady_clock::now();
38+
_start = steady_clock::now();
3839
_end = {};
3940
_started = true;
4041
}
4142

4243
void ChronoElapsedTimer::stop()
4344
{
44-
Q_ASSERT(_end == std::chrono::steady_clock::time_point{});
45+
Q_ASSERT(_end == steady_clock::time_point{});
4546
Q_ASSERT(_started);
46-
_end = std::chrono::steady_clock::now();
47+
_end = steady_clock::now();
4748
_started = false;
4849
}
4950

50-
std::chrono::nanoseconds ChronoElapsedTimer::duration() const
51+
nanoseconds ChronoElapsedTimer::duration() const
5152
{
5253
if (!_started) {
53-
return std::chrono::nanoseconds::max();
54+
return nanoseconds::max();
5455
}
55-
if (_end != std::chrono::steady_clock::time_point{}) {
56+
if (_end != steady_clock::time_point{}) {
5657
return _end - _start;
5758
}
58-
return std::chrono::steady_clock::now() - _start;
59+
return steady_clock::now() - _start;
60+
}
61+
62+
QDebug operator<<(QDebug debug, const ChronoElapsedTimer &timer)
63+
{
64+
QDebugStateSaver save(debug);
65+
debug.nospace();
66+
auto duration = timer.duration();
67+
const auto h = duration_cast<hours>(duration);
68+
const auto min = duration_cast<minutes>(duration -= h);
69+
const auto s = duration_cast<seconds>(duration -= min);
70+
const auto ms = duration_cast<milliseconds>(duration -= s);
71+
return debug << "ChronoElapsedTimer(" << h.count() << "h, " << min.count() << "min, " << s.count() << "s, " << ms.count() << "ms)";
5972
}

src/libsync/common/chronoelapsedtimer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#pragma once
1919
#include "libsync/opencloudsynclib.h"
2020

21+
#include <QDebug>
22+
2123
#include <chrono>
2224

2325
namespace OCC::Utility {
@@ -52,3 +54,5 @@ class OPENCLOUD_SYNC_EXPORT ChronoElapsedTimer
5254
};
5355

5456
}
57+
58+
OPENCLOUD_SYNC_EXPORT QDebug operator<<(QDebug debug, const OCC::Utility::ChronoElapsedTimer &in);

src/libsync/creds/credentialmanager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ QKeychain::Job *CredentialManager::set(const QString &key, const QVariant &data)
7575

7676
Utility::ChronoElapsedTimer elapsedTimer;
7777
connect(timer, &QTimer::timeout, writeJob,
78-
[writeJob, elapsedTimer] { qCWarning(lcCredentialsManager) << "set" << writeJob->key() << "has not yet finished." << elapsedTimer.duration(); });
78+
[writeJob, elapsedTimer] { qCWarning(lcCredentialsManager) << "set" << writeJob->key() << "has not yet finished." << elapsedTimer; });
7979
connect(writeJob, &QKeychain::WritePasswordJob::finished, this, [writeJob, key, elapsedTimer, this] {
8080
if (writeJob->error() == QKeychain::NoError) {
81-
qCInfo(lcCredentialsManager) << "added" << writeJob->key() << "after" << elapsedTimer.duration();
81+
qCInfo(lcCredentialsManager) << "added" << writeJob->key() << "after" << elapsedTimer;
8282
// just a list, the values don't matter
8383
credentialsList().setValue(key, true);
8484
} else {
85-
qCWarning(lcCredentialsManager) << "Failed to set:" << writeJob->key() << writeJob->errorString() << "after" << elapsedTimer.duration();
85+
qCWarning(lcCredentialsManager) << "Failed to set:" << writeJob->key() << writeJob->errorString() << "after" << elapsedTimer;
8686
}
8787
});
8888
writeJob->setBinaryData(QCborValue::fromVariant(data).toCbor());

src/libsync/httplogger.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void logHttp(const QByteArray &verb, HttpContext *ctx, QJsonObject &&header, QIO
9090
{QStringLiteral("cached"), reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool()},
9191
// downcast to int, this is json
9292
{QStringLiteral("duration"), static_cast<int>(duration_cast<milliseconds>(ctx->timer.duration()).count())}, //
93-
{QStringLiteral("durationString"), QDebug::toString(ctx->timer.duration())},
93+
{QStringLiteral("durationString"), QDebug::toString(ctx->timer)},
9494
{QStringLiteral("version"),
9595
QStringLiteral("HTTP %1").arg(
9696
reply->attribute(QNetworkRequest::Http2WasUsedAttribute).toBool() ? QStringLiteral("1.1") : QStringLiteral("2"))}};

src/libsync/syncengine.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ void SyncEngine::startSync()
379379
return;
380380
}
381381

382-
qCInfo(lcEngine) << "#### Discovery start ####################################################" << _duration.duration();
382+
qCInfo(lcEngine) << "#### Discovery start ####################################################" << _duration;
383383
qCInfo(lcEngine) << "Server" << account()->capabilities().status().versionString()
384384
<< (account()->isHttp2Supported() ? "Using HTTP/2" : "");
385385
_progressInfo->_status = ProgressInfo::Discovery;
@@ -470,7 +470,7 @@ void SyncEngine::slotDiscoveryFinished()
470470
return;
471471
}
472472

473-
qCInfo(lcEngine) << "#### Discovery end ####################################################" << _duration.duration();
473+
qCInfo(lcEngine) << "#### Discovery end ####################################################" << _duration;
474474

475475
// Sanity check
476476
if (!_journal->open()) {
@@ -537,14 +537,14 @@ void SyncEngine::slotDiscoveryFinished()
537537
erase_if(_syncItems, [&names](const SyncFileItemPtr &i) { return !names.contains(QStringView{i->localName()}); });
538538
}
539539

540-
qCInfo(lcEngine) << "#### Reconcile (aboutToPropagate) ####################################################" << _duration.duration();
540+
qCInfo(lcEngine) << "#### Reconcile (aboutToPropagate) ####################################################" << _duration;
541541

542542
_localDiscoveryPaths.clear();
543543

544544
// To announce the beginning of the sync
545545
Q_EMIT aboutToPropagate(_syncItems);
546546

547-
qCInfo(lcEngine) << "#### Reconcile (aboutToPropagate OK) ####################################################" << _duration.duration();
547+
qCInfo(lcEngine) << "#### Reconcile (aboutToPropagate OK) ####################################################" << _duration;
548548

549549
// it's important to do this before ProgressInfo::start(), to announce start of new sync
550550
_progressInfo->_status = ProgressInfo::Propagation;
@@ -582,7 +582,7 @@ void SyncEngine::slotDiscoveryFinished()
582582
_propagator->start(std::move(_syncItems));
583583

584584

585-
qCInfo(lcEngine) << "#### Post-Reconcile end ####################################################" << _duration.duration();
585+
qCInfo(lcEngine) << "#### Post-Reconcile end ####################################################" << _duration;
586586
};
587587

588588
finish();
@@ -656,7 +656,7 @@ void SyncEngine::slotPropagationFinished(bool success)
656656

657657
void SyncEngine::finalize(bool success)
658658
{
659-
qCInfo(lcEngine) << "Sync run for" << _localPath << "took" << _duration.duration();
659+
qCInfo(lcEngine) << "Sync run for" << _localPath << "took" << _duration;
660660
_duration.stop();
661661

662662
if (_discoveryPhase) {

0 commit comments

Comments
 (0)