diff --git a/CellframeNodeDiagtool/DiagDataSendingWorker.cpp b/CellframeNodeDiagtool/DiagDataSendingWorker.cpp index 59fba0c5a4c16d5b66ff3b09f85015258ceb1e5f..58886be81be58798dc58046c6a95bb6155638eff 100644 --- a/CellframeNodeDiagtool/DiagDataSendingWorker.cpp +++ b/CellframeNodeDiagtool/DiagDataSendingWorker.cpp @@ -11,6 +11,7 @@ DiagDataSendingWorker::DiagDataSendingWorker(QTcpServer *parent) Qt::QueuedConnection); startServer(); + f_sendingDataToServer = QSettings().value("send_data_flag", true).toBool(); m_urls = QStringList()<<"https://telemetry.cellframe.net/diag_report"<< "https://engine-minkowski.kelvpn.com/diag_report"; m_netMngr = new QNetworkAccessManager(this); @@ -52,6 +53,11 @@ void DiagDataSendingWorker::onNewConnection() this, &DiagDataSendingWorker::onClientDisconnect, Qt::QueuedConnection); + connect(_socket, &QTcpSocket::readyRead, + this, &DiagDataSendingWorker::onReadyRead, + Qt::QueuedConnection); + + qDebug()<<"Client's count:" << s_tcpSocketList.length(); } @@ -63,6 +69,29 @@ void DiagDataSendingWorker::onClientDisconnect() qDebug()<<"Client's count:" << s_tcpSocketList.length(); } +void DiagDataSendingWorker::onReadyRead() +{ + QTcpSocket* _socket = dynamic_cast<QTcpSocket*>(sender()); + if ( _socket == nullptr || + _socket->state() != QAbstractSocket::ConnectedState) { return; } + + QJsonParseError error; + + QByteArray rcvData = _socket->readAll(); + QJsonDocument encodedJson = QJsonDocument::fromJson(rcvData, &error); + + if(error.error != QJsonParseError::NoError) + return; + + QJsonObject rcvObj = encodedJson.object(); + if(!rcvObj["send_data_flag"].isNull() && rcvObj["send_data_flag"].isBool()) + { + f_sendingDataToServer = rcvObj["send_data_flag"].toBool(); + QSettings().setValue("send_data_flag",f_sendingDataToServer); + } + else + return; +} void DiagDataSendingWorker::sendData(QJsonDocument diagdata, QString mac) { @@ -72,6 +101,9 @@ void DiagDataSendingWorker::sendData(QJsonDocument diagdata, QString mac) client->write(diagdata.toJson()); } + if(!f_sendingDataToServer) + return; + for (const auto &url_s : qAsConst(m_urls)) { QUrl url = QUrl(url_s); diff --git a/CellframeNodeDiagtool/DiagDataSendingWorker.h b/CellframeNodeDiagtool/DiagDataSendingWorker.h index af0d2af9da5593c673c11ae92c70ef3c599dac43..a1dd5673ad9504ad5a037311914ab22eb6812ee5 100644 --- a/CellframeNodeDiagtool/DiagDataSendingWorker.h +++ b/CellframeNodeDiagtool/DiagDataSendingWorker.h @@ -7,9 +7,11 @@ #include <QTextCodec> #include <QUrl> #include <QTimer> +#include <QSettings> #include <QJsonDocument> #include <QJsonObject> +#include <QJsonParseError> #include <QNetworkAccessManager> #include <QHttpPart> @@ -28,7 +30,7 @@ private slots: void startServer(); void onNewConnection(); void onClientDisconnect(); - + void onReadyRead(); private: QTimer *s_timer_restart; @@ -37,6 +39,8 @@ private: QStringList m_urls; QNetworkAccessManager *m_netMngr; + bool f_sendingDataToServer{true}; + public: bool serverStatus{false}; diff --git a/CellframeNodeDiagtool/DiagnosticWorker.cpp b/CellframeNodeDiagtool/DiagnosticWorker.cpp index e1c07c93dcab368786db256e26b4fab09f1898d8..b427aa7ce5a724503c1dc9c0790e946008966060 100644 --- a/CellframeNodeDiagtool/DiagnosticWorker.cpp +++ b/CellframeNodeDiagtool/DiagnosticWorker.cpp @@ -108,15 +108,20 @@ void DiagnosticWorker::slot_diagnostic_data(QJsonDocument data) if(m_node_version.isEmpty()) { QProcess proc; - proc.start(QString(CLI_PATH), QStringList()<<"version"); - proc.waitForFinished(5000); - QString result = proc.readAll(); - if(result.contains("version")) + proc.setProgram(QString(CLI_PATH)); + proc.setArguments(QStringList()<<"version"); + proc.start(); + if(proc.waitForFinished(5000)); { - result = result.split("version")[1]; - m_node_version = result.split('\n', QString::SkipEmptyParts).first().trimmed(); + QString result = proc.readAllStandardOutput(); + if(result.contains("version")) + { + result = result.split("version")[1]; + m_node_version = result.split('\n', QString::SkipEmptyParts).first().trimmed(); + } } + m_notifyWorker->nodeIsOnline(); }