diff --git a/3rdparty/o2/src/o2reply.cpp b/3rdparty/o2/src/o2reply.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c0107e2128286d2fe9636a376ad75f821a956319 --- /dev/null +++ b/3rdparty/o2/src/o2reply.cpp @@ -0,0 +1,46 @@ +#include +#include + +#include "o2reply.h" + +O2Reply::O2Reply(QNetworkReply *r, int timeOut, QObject *parent): QTimer(parent), reply(r) { + setSingleShot(true); + connect(this, SIGNAL(error(QNetworkReply::NetworkError)), reply, SIGNAL(error(QNetworkReply::NetworkError)), Qt::QueuedConnection); + connect(this, SIGNAL(timeout()), this, SLOT(onTimeOut()), Qt::QueuedConnection); + start(timeOut); +} + +void O2Reply::onTimeOut() { + emit error(QNetworkReply::TimeoutError); +} + +O2ReplyList::~O2ReplyList() { + foreach (O2Reply *timedReply, replies_) { + delete timedReply; + } +} + +void O2ReplyList::add(QNetworkReply *reply) { + add(new O2Reply(reply)); +} + +void O2ReplyList::add(O2Reply *reply) { + replies_.append(reply); +} + +void O2ReplyList::remove(QNetworkReply *reply) { + O2Reply *o2Reply = find(reply); + if (o2Reply) { + o2Reply->stop(); + (void)replies_.removeOne(o2Reply); + } +} + +O2Reply *O2ReplyList::find(QNetworkReply *reply) { + foreach (O2Reply *timedReply, replies_) { + if (timedReply->reply == reply) { + return timedReply; + } + } + return 0; +}