43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
#include <QJsonDocument>
|
|
#include <QLocalSocket>
|
|
#include <QJsonObject>
|
|
#include "Socket.h"
|
|
|
|
Socket::Socket(Runner *runner) :
|
|
runner(runner)
|
|
{
|
|
}
|
|
|
|
void Socket::incomingConnection(quintptr socketDescriptor)
|
|
{
|
|
QLocalSocket *socket = new QLocalSocket;
|
|
if (!socket->setSocketDescriptor(socketDescriptor, QLocalSocket::ConnectedState, QLocalSocket::WriteOnly)) {
|
|
QTextStream(stderr) << "Socket failed to initialise." << endl;
|
|
delete socket;
|
|
return;
|
|
}
|
|
|
|
QObject::connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
|
|
|
|
QJsonObject pingObject;
|
|
QMap<QString, double> pingData_l = runner->pingData();
|
|
QMap<QString, double>::const_iterator it = pingData_l.constBegin();
|
|
QMap<QString, double>::const_iterator end = pingData_l.constEnd();
|
|
while (it != end) {
|
|
pingObject.insert(it.key(), it.value());
|
|
it++;
|
|
}
|
|
|
|
QJsonObject object;
|
|
object.insert("Current", runner->currentHost());
|
|
object.insert("Ping", pingObject);
|
|
object.insert("Refreshed", QString::number(runner->refreshed(), 16));
|
|
|
|
QJsonDocument document;
|
|
document.setObject(object);
|
|
|
|
QByteArray jsonData = document.toJson(QJsonDocument::Compact);
|
|
socket->write(jsonData + "\n");
|
|
socket->disconnectFromServer();
|
|
}
|