File: DriftingDateTime.cpp

package info (click to toggle)
js8call 2.5.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,720 kB
  • sloc: cpp: 562,655; sh: 898; python: 132; ansic: 102; makefile: 4
file content (55 lines) | stat: -rw-r--r-- 1,583 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <QLoggingCategory>
#include <QMutexLocker>
#include <QThread>

#include "DriftingDateTime.h"
#include "qDateTimeExperiment.h"

Q_DECLARE_LOGGING_CATEGORY(driftingdatetime_js8)

static QPointer<QDateTimeRoundingExperiment> experiment;

DriftingDateTimeSingleton &DriftingDateTimeSingleton::getSingleton() {
    if (singleton.isNull()) {
        singleton = QPointer{new DriftingDateTimeSingleton{}};
        if (experiment.isNull()) {
            experiment = QPointer{new QDateTimeRoundingExperiment};
        }
    }
    return *(singleton.data());
}

DriftingDateTimeSingleton::DriftingDateTimeSingleton() : driftMS(0) {}

qint64 DriftingDateTimeSingleton::drift() const {
    QMutexLocker locker(&mutex);
    return driftMS;
}

void DriftingDateTimeSingleton::setDriftInner(qint64 ms) {
    QMutexLocker locker(&mutex);
    driftMS = ms;
}

void DriftingDateTimeSingleton::setDrift(qint64 ms) {
    qint64 old_drift = drift();
    setDriftInner(ms);
    if (ms != old_drift) {
        qCDebug(driftingdatetime_js8)
            << "Changed drift from" << old_drift << "to" << ms << "ms";
        emit driftChanged(ms);
    } else {
        qCDebug(driftingdatetime_js8)
            << "Incoming signal without change of drift, still" << old_drift
            << "ms";
    }
}

void DriftingDateTimeSingleton::onPlumbingCompleted() const {
    emit driftChanged(drift());
}

QPointer<DriftingDateTimeSingleton> DriftingDateTimeSingleton::singleton =
    QPointer<DriftingDateTimeSingleton>{};

Q_LOGGING_CATEGORY(driftingdatetime_js8, "driftingdatetime.js8", QtWarningMsg)