70 lines
1.4 KiB
C++
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 ¤tHost)
|
||
|
{
|
||
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|