/*! * \copyright Copyright (c) 2014-2017 Governikus GmbH & Co. KG, Germany */ #include "NetworkReplyTimeout.h" #include "Env.h" #include "NetworkManager.h" #include using namespace governikus; NetworkReplyTimeout::NetworkReplyTimeout(QNetworkReply* pReply, const int pTimeout) : QObject(pReply) { Q_ASSERT(pReply); if (!pReply) { return; } connect(&mTimer, &QTimer::timeout, this, &NetworkReplyTimeout::onTimeout); mTimer.setSingleShot(true); mTimer.setInterval(pTimeout); mTimer.start(); } void NetworkReplyTimeout::onTimeout() { QNetworkReply* reply = static_cast(parent()); if (reply != nullptr && reply->isRunning()) { reply->abort(); } } void NetworkReplyTimeout::onShutdown() { mTimer.stop(); onTimeout(); } void NetworkReplyTimeout::setTimeout(QNetworkReply* pReply, const int pTimeout) { // since the QNetworkReply is set as parent, we don't need to care about destruction NetworkReplyTimeout* timeout = new NetworkReplyTimeout(pReply, pTimeout); connect(Env::getSingleton(), &NetworkManager::fireShutdown, timeout, &NetworkReplyTimeout::onShutdown); }