123 lines
3.1 KiB
C++
123 lines
3.1 KiB
C++
#include "InternetMonitor.h"
|
|
#include <QNetworkReply>
|
|
#include "defines.h"
|
|
#include "GeneralMessagesLogDispatcher.h"
|
|
|
|
CInternetMonitor::CInternetMonitor(QObject *parent) : QObject(parent)
|
|
{
|
|
mInternetActive = false;
|
|
|
|
mNetMgr = new QNetworkAccessManager(this);
|
|
connect(mNetMgr,&QNetworkAccessManager::finished,this,&CInternetMonitor::NetworkReqfinished);
|
|
|
|
mConnectionTimer = new QTimer;
|
|
mConnectionTimer->setSingleShot(true);
|
|
mConnectionTimer->setInterval(INTERNET_MONITOR_CONNECTION_TIMEOUT);
|
|
connect(mConnectionTimer,&QTimer::timeout,this,&CInternetMonitor::ConnectionTimerExpired);
|
|
|
|
mCheckInternetStateTimer = new QTimer;
|
|
mCheckInternetStateTimer->setSingleShot(true);
|
|
mCheckInternetStateTimer->setInterval(INTERNET_MONITOR_INET_CHECK_TIMEOUT);
|
|
connect(mCheckInternetStateTimer,&QTimer::timeout,this,&CInternetMonitor::CheckInternetTimerExpired);
|
|
|
|
|
|
|
|
}
|
|
|
|
CInternetMonitor::~CInternetMonitor()
|
|
{
|
|
delete mNetMgr;
|
|
delete mCheckInternetStateTimer;
|
|
delete mConnectionTimer;
|
|
}
|
|
|
|
|
|
bool CInternetMonitor::IsInternetActive()
|
|
{
|
|
return mInternetActive;
|
|
}
|
|
|
|
int CInternetMonitor::Start(quint64 CANReportingBit)
|
|
{
|
|
mCANReportingMask = 1;
|
|
mCANReportingMask <<= CANReportingBit;
|
|
CheckInternet();
|
|
return RET_OK;
|
|
}
|
|
|
|
int CInternetMonitor::UpdateCANReportingBit(quint64 CANBit)
|
|
{
|
|
mCANReportingMask = 1;
|
|
mCANReportingMask <<= CANBit;
|
|
return RET_OK;
|
|
}
|
|
|
|
int CInternetMonitor::CheckInternet()
|
|
{
|
|
if(mConnectionTimer->isActive()) //are we waiting for a reply??
|
|
return RET_GENERAL_ERROR;
|
|
|
|
mNetMgr->get(QNetworkRequest(QUrl("http://google.ca")));
|
|
mConnectionTimer->start();
|
|
return RET_OK;
|
|
}
|
|
|
|
void CInternetMonitor::NetworkReqfinished(QNetworkReply *reply)
|
|
{
|
|
mConnectionTimer->stop();
|
|
|
|
if(reply->error() == QNetworkReply::NoError)
|
|
{
|
|
// QByteArray Data = reply->readAll();
|
|
// qDebug("%s",qPrintable(Data));
|
|
if(mInternetActive == false)
|
|
{
|
|
emit InternetStateChanged(true);
|
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Internet Connecté...","CInternetMonitor");
|
|
}
|
|
mInternetActive = true;
|
|
//qDebug("Internet is active");
|
|
}
|
|
else
|
|
{
|
|
if(mInternetActive == true)
|
|
{
|
|
emit InternetStateChanged(false);
|
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Internet déconnecté...","CInternetMonitor");
|
|
}
|
|
mInternetActive = false;
|
|
|
|
}
|
|
|
|
mCheckInternetStateTimer->start();
|
|
reply->close();
|
|
reply->deleteLater();
|
|
}
|
|
|
|
void CInternetMonitor::CheckInternetTimerExpired()
|
|
{
|
|
CheckInternet();
|
|
}
|
|
|
|
void CInternetMonitor::ConnectionTimerExpired()
|
|
{
|
|
mCheckInternetStateTimer->start();
|
|
mConnectionTimer->stop();
|
|
if(mInternetActive == true)
|
|
{
|
|
emit InternetStateChanged(false);
|
|
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Internet déconnecté...","CInternetMonitor");
|
|
}
|
|
mInternetActive = false;
|
|
}
|
|
|
|
quint64 CInternetMonitor::GetCANInternetStatusMask()
|
|
{
|
|
if(mInternetActive == true)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return mCANReportingMask;
|
|
}
|