#include "InternetMonitor.h" #include #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; }