mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 00:25:35 +08:00
Ref T42, util function to create network report
This commit is contained in:
committed by
Mathew Sutcliffe
parent
297ef8ea16
commit
d46257f670
@@ -7,12 +7,14 @@
|
||||
* contained in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "blackmisc/eventloop.h"
|
||||
#include "blackmisc/network/networkutils.h"
|
||||
#include "blackmisc/network/server.h"
|
||||
#include "blackmisc/eventloop.h"
|
||||
#include "blackmisc/stringutils.h"
|
||||
#include "blackconfig/buildconfig.h"
|
||||
#include <QAbstractSocket>
|
||||
#include <QDateTime>
|
||||
#include <QMetaEnum>
|
||||
#include <QDebug>
|
||||
#include <QHostAddress>
|
||||
#include <QJsonDocument>
|
||||
@@ -21,6 +23,7 @@
|
||||
#include <QNetworkAddressEntry>
|
||||
#include <QNetworkInterface>
|
||||
#include <QNetworkReply>
|
||||
#include <QNetworkConfiguration>
|
||||
#include <QObject>
|
||||
#include <QSignalMapper>
|
||||
#include <QSslCertificate>
|
||||
@@ -50,6 +53,11 @@ namespace BlackMisc
|
||||
return 3000;
|
||||
}
|
||||
|
||||
int CNetworkUtils::getLongTimeoutMs()
|
||||
{
|
||||
return 3 * getTimeoutMs();
|
||||
}
|
||||
|
||||
bool CNetworkUtils::canPing(const QString &hostAddress)
|
||||
{
|
||||
if (hostAddress.isEmpty()) { return false; }
|
||||
@@ -341,5 +349,50 @@ namespace BlackMisc
|
||||
static const QRegularExpression regEx("<[^>]*>");
|
||||
return phpError.remove(regEx);
|
||||
}
|
||||
|
||||
CStatusMessageList CNetworkUtils::createNetworkReport(const QNetworkAccessManager *am)
|
||||
{
|
||||
return CNetworkUtils::createNetworkReport(CUrl(), am);
|
||||
}
|
||||
|
||||
CStatusMessageList CNetworkUtils::createNetworkReport(const CUrl &url, const QNetworkAccessManager *am)
|
||||
{
|
||||
static const CLogCategoryList cats({CLogCategory::network()});
|
||||
CStatusMessageList msgs;
|
||||
|
||||
if (!url.isEmpty())
|
||||
{
|
||||
const QString host = url.getHost();
|
||||
const bool canPing = CNetworkUtils::canPing(host);
|
||||
const CStatusMessage ping(cats, canPing ? CStatusMessage::SeverityInfo : CStatusMessage::SeverityError, "Host: " + host + " ping: " + boolToYesNo(canPing));
|
||||
msgs.push_back(ping);
|
||||
|
||||
QString msg;
|
||||
const bool canConnect = CNetworkUtils::canConnect(url, msg, getTimeoutMs() * 2);
|
||||
if (canConnect)
|
||||
{
|
||||
msgs.push_back(CStatusMessage(cats, CStatusMessage::SeverityInfo, "Can connect to " + url.getFullUrl()));
|
||||
}
|
||||
else
|
||||
{
|
||||
msgs.push_back(CStatusMessage(cats, CStatusMessage::SeverityError, "Cannot connect to " + url.getFullUrl() + " msg: " + msg));
|
||||
}
|
||||
}
|
||||
|
||||
if (am)
|
||||
{
|
||||
const bool accessible = am->networkAccessible() == QNetworkAccessManager::Accessible;
|
||||
const QNetworkConfiguration c = am->configuration();
|
||||
static const QMetaEnum enumAccessible = QMetaEnum::fromType<QNetworkAccessManager::NetworkAccessibility>();
|
||||
|
||||
const QString msg = QString("Accessible: %1 (%2) bearer: %3 %4").arg(
|
||||
boolToYesNo(accessible),
|
||||
enumAccessible.valueToKey(am->networkAccessible()),
|
||||
c.bearerTypeName(), c.identifier());
|
||||
msgs.push_back(CStatusMessage(cats, accessible ? CStatusMessage::SeverityInfo : CStatusMessage::SeverityError, msg));
|
||||
}
|
||||
|
||||
return msgs;
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -12,10 +12,12 @@
|
||||
#ifndef BLACKMISC_NETWORKUTILS_H
|
||||
#define BLACKMISC_NETWORKUTILS_H
|
||||
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "blackmisc/network/urllist.h"
|
||||
#include "blackmisc/blackmiscexport.h"
|
||||
#include "blackmisc/statusmessagelist.h"
|
||||
|
||||
#include <QNetworkRequest>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QtGlobal>
|
||||
@@ -46,6 +48,9 @@ namespace BlackMisc
|
||||
//! Default for timeout
|
||||
static int getTimeoutMs();
|
||||
|
||||
//! Default for timeout (long)
|
||||
static int getLongTimeoutMs();
|
||||
|
||||
//! Can ping the address?
|
||||
//! \note uses OS ping
|
||||
static bool canPing(const QString &hostAddress);
|
||||
@@ -137,6 +142,13 @@ namespace BlackMisc
|
||||
//! Remove the HTML formatting from a PHP error message
|
||||
static QString removeHtmlPartsFromPhpErrorMessage(const QString &errorMessage);
|
||||
|
||||
//! Status about network
|
||||
static BlackMisc::CStatusMessageList createNetworkReport(const QNetworkAccessManager *am);
|
||||
|
||||
//! Status about network, can be used when an URL fails to resolve issues
|
||||
//! \remark that can take a moment to complete, as it checks network
|
||||
static BlackMisc::CStatusMessageList createNetworkReport(const CUrl &url, const QNetworkAccessManager *am = nullptr);
|
||||
|
||||
private:
|
||||
//! Hidden constructor
|
||||
CNetworkUtils() {}
|
||||
|
||||
Reference in New Issue
Block a user