vpnstatus/Runner.cpp

70 lines
1.4 KiB
C++

#include <QDateTime>
#include "Runner.h"
#include "Ping.h"
Runner::Runner(QList<QString> pingHosts) :
pingHosts_p(pingHosts)
{
}
void Runner::refresh()
{
QMutexLocker locker(&mutex);
refreshed_p = QDateTime::currentDateTimeUtc().toTime_t();
}
uint Runner::refreshed()
{
QMutexLocker locker(&mutex);
return refreshed_p;
}
const QString Runner::currentHost()
{
QMutexLocker locker(&mutex);
return currentHost_p;
}
const QMap<QString, double> Runner::pingData()
{
QMutexLocker locker(&mutex);
return pingData_p;
}
void Runner::setCurrentHost(const QString &currentHost)
{
QMutexLocker locker(&mutex);
currentHost_p = currentHost;
}
void Runner::setPingData(const QMap<QString, double> &pingData)
{
QMutexLocker locker(&mutex);
pingData_p = pingData;
}
void Runner::run()
{
// Ping data initialisation
QMap<QString, double> pingData_l;
for (const QString &host : pingHosts_p) {
pingData_l.insert(host, -1);
}
setPingData(pingData_l);
refresh();
forever {
if (QThread::currentThread()->isInterruptionRequested()) {
return;
}
for (const QString &host : pingHosts_p) {
setCurrentHost(host);
refresh();
double ping = Ping::ping(host, 3);
pingData_l[host] = ping;
setPingData(pingData_l);
refresh();
}
}
}