##// END OF EJS Templates
Updates IDataProvider::requestDataLoading() method's signature...
Updates IDataProvider::requestDataLoading() method's signature The parameters needed for data retrieval are passed to a DataProviderParameters object. For now, it concerns only the list of datetimes to process, but the object will be completed with extra data which may be necessary for certain providers

File last commit:

r401:5601a2d8f3ef
r408:49f712bf7e59
Show More
NetworkController.cpp
87 lines | 2.9 KiB | text/x-c | CppLexer
/ core / src / Network / NetworkController.cpp
Intialization of network controller
r339 #include "Network/NetworkController.h"
#include <QMutex>
Add execute skelleton Network
r386 #include <QNetworkAccessManager>
#include <QNetworkReply>
Implement the network controller to permit the execution of a request...
r389 #include <QNetworkRequest>
Intialization of network controller
r339 #include <QThread>
Implement the network controller to permit the execution of a request...
r389 #include <unordered_map>
Intialization of network controller
r339 Q_LOGGING_CATEGORY(LOG_NetworkController, "NetworkController")
struct NetworkController::NetworkControllerPrivate {
Implement the network controller to permit the execution of a request...
r389 explicit NetworkControllerPrivate(NetworkController *parent) : m_WorkingMutex{} {}
Intialization of network controller
r339 QMutex m_WorkingMutex;
Add execute skelleton Network
r386
Implement the network controller to permit the execution of a request...
r389 std::unordered_map<QNetworkReply *, QUuid> m_NetworkReplyToVariableId;
Add execute skelleton Network
r386 std::unique_ptr<QNetworkAccessManager> m_AccessManager{nullptr};
Intialization of network controller
r339 };
NetworkController::NetworkController(QObject *parent)
: QObject(parent), impl{spimpl::make_unique_impl<NetworkControllerPrivate>(this)}
{
Add execute skelleton Network
r386 }
Implement the network controller to permit the execution of a request...
r389 void NetworkController::onProcessRequested(const QNetworkRequest &request, QUuid identifier,
std::function<void(QNetworkReply *, QUuid)> callback)
Add execute skelleton Network
r386 {
Add implementation of progress bar on variable inspector connected to...
r401 qCInfo(LOG_NetworkController()) << tr("NetworkController registered")
<< QThread::currentThread();
Implement the network controller to permit the execution of a request...
r389 auto reply = impl->m_AccessManager->get(request);
// Store the couple reply id
impl->m_NetworkReplyToVariableId[reply] = identifier;
auto onReplyFinished = [reply, this, identifier, callback]() {
Add implementation of progress bar on variable inspector connected to...
r401 qCInfo(LOG_NetworkController()) << tr("NetworkController onReplyFinished")
<< QThread::currentThread();
Implement the network controller to permit the execution of a request...
r389 auto it = impl->m_NetworkReplyToVariableId.find(reply);
if (it != impl->m_NetworkReplyToVariableId.cend()) {
callback(reply, identifier);
}
};
Add implementation of progress bar on variable inspector connected to...
r401 auto onReplyProgress = [reply, this](qint64 bytesRead, qint64 totalBytes) {
Add execute skelleton Network
r386
Add implementation of progress bar on variable inspector connected to...
r401 double progress = (bytesRead * 100.0) / totalBytes;
Implement the network controller to permit the execution of a request...
r389 auto it = impl->m_NetworkReplyToVariableId.find(reply);
if (it != impl->m_NetworkReplyToVariableId.cend()) {
Add implementation of progress bar on variable inspector connected to...
r401 emit this->replyDownloadProgress(it->second, progress);
Implement the network controller to permit the execution of a request...
r389 }
};
Add execute skelleton Network
r386
Implement the network controller to permit the execution of a request...
r389
connect(reply, &QNetworkReply::finished, this, onReplyFinished);
Add implementation of progress bar on variable inspector connected to...
r401 connect(reply, &QNetworkReply::downloadProgress, this, onReplyProgress);
Intialization of network controller
r339 }
void NetworkController::initialize()
{
qCDebug(LOG_NetworkController()) << tr("NetworkController init") << QThread::currentThread();
impl->m_WorkingMutex.lock();
Implement the network controller to permit the execution of a request...
r389 impl->m_AccessManager = std::make_unique<QNetworkAccessManager>();
Intialization of network controller
r339 qCDebug(LOG_NetworkController()) << tr("NetworkController init END");
}
void NetworkController::finalize()
{
impl->m_WorkingMutex.unlock();
}
Implement the network controller to permit the execution of a request...
r389 void NetworkController::onReplyCanceled(QUuid identifier)
{
auto findReply = [identifier](const auto &entry) { return identifier == entry.second; };
auto end = impl->m_NetworkReplyToVariableId.cend();
auto it = std::find_if(impl->m_NetworkReplyToVariableId.cbegin(), end, findReply);
if (it != end) {
it->first->abort();
}
}
Intialization of network controller
r339 void NetworkController::waitForFinish()
{
QMutexLocker locker{&impl->m_WorkingMutex};
}