AusweisApp2/src/network/NetworkReplyTimeout.cpp

53 lines
1.1 KiB
C++
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
2017-12-20 14:54:05 +01:00
* \copyright Copyright (c) 2014-2017 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#include "NetworkReplyTimeout.h"
2017-12-20 14:54:05 +01:00
#include "Env.h"
2017-07-03 09:30:10 +02:00
#include "NetworkManager.h"
#include <QCoreApplication>
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<QNetworkReply*>(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);
2017-12-20 14:54:05 +01:00
connect(Env::getSingleton<NetworkManager>(), &NetworkManager::fireShutdown, timeout, &NetworkReplyTimeout::onShutdown);
2017-07-03 09:30:10 +02:00
}