From ef0eefa74161e3c7c4187b9cee7b1828e9feb148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 10:47:48 +0100 Subject: [PATCH] new aproach to transfering data --- server-sdk | 2 +- src/colnod/colnodapi.cpp | 75 ++++++++++++++++++---------------------- src/colnod/colnodapi.h | 10 +++--- 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/server-sdk b/server-sdk index 61feac4..2041fed 160000 --- a/server-sdk +++ b/server-sdk @@ -1 +1 @@ -Subproject commit 61feac4632372fcf781449da0bf0de14f1793af8 +Subproject commit 2041fed9fab14658ceb574edaf5e4d31ed81e23a diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 85f722d..c0c613b 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -39,8 +39,6 @@ void ColnodAPI::downloadData() qWarning(colnod) << "Data from" << request->url() << "are invalid"; mValid = false; } - saveUpdatedTokens(request->responseData()); - emit partOfDataReady(data); }; // if I have all data emit downloadDataFinished @@ -48,15 +46,31 @@ void ColnodAPI::downloadData() auto tokensRequest = getTokensUpdated(mLastSync); connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler); + connect(tokensRequest.get(), &serversdk::Request::finished, [=](){ + saveUpdatedTokens(data, tokensRequest->responseData()); + emit partOfDataReady(data); + }); auto deletedTokensRequest = getTokensDeleted(mLastSync); connect(deletedTokensRequest.get(), &serversdk::Request::finished, errorHandler); + connect(deletedTokensRequest.get(), &serversdk::Request::finished, [=](){ + saveDeletedTokens(data, deletedTokensRequest->responseData()); + emit partOfDataReady(data); + }); auto subjectsRequest = getSubjectsUpdated(mLastSync); connect(subjectsRequest.get(), &serversdk::Request::finished, errorHandler); + connect(subjectsRequest.get(), &serversdk::Request::finished, [=](){ + saveUpdatedSubjects(data, subjectsRequest->responseData()); + emit partOfDataReady(data); + }); auto deletedSubjectsRequest = getSubjectsDeleted(mLastSync); connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, errorHandler); + connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, [=](){ + saveDeletedSubjects(data, deletedSubjectsRequest->responseData()); + emit partOfDataReady(data); + }); }); } @@ -132,18 +146,7 @@ std::shared_ptr ColnodAPI::getSubjectsUpdated(const Timestam auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData()); request->setUserName(authToken); mReqMan->processRequest(request); - connect(request.get(), &serversdk::Request::finished, [=](){ - if (!checkRequest(request)) { - qWarning(colnod) << "ERROR during calling /SubjectManager/getSubjectsUpdated, request unsuccessful"; - mValid = false; - } - else if (!checkResponse(request->responseData())) { - qWarning(colnod) << "Data from /SubjectManager/getSubjectsUpdated are invalid"; - mValid = false; - } - saveUpdatedSubjects(request->responseData()); - emit partOfDataReady(); - }); + return request; } std::shared_ptr ColnodAPI::getSubjectsDeleted(const Timestamp &time) @@ -151,18 +154,7 @@ std::shared_ptr ColnodAPI::getSubjectsDeleted(const Timestam auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData()); request->setUserName(authToken); mReqMan->processRequest(request); - connect(request.get(), &serversdk::Request::finished, [=](){ - if (!checkRequest(request)) { - qWarning(colnod) << "ERROR during calling /SubjectManager/getSubjectsDeleted, request unsuccessful"; - mValid = false; - } - else if (!checkResponse(request->responseData())) { - qWarning(colnod) << "Data from /SubjectManager/getSubjectsDeleted are invalid"; - mValid = false; - } - saveDeletedSubjects(request->responseData()); - emit partOfDataReady(); - }); + return request; } std::shared_ptr ColnodAPI::setTokens(const QHash> &tokens) @@ -184,6 +176,7 @@ std::shared_ptr ColnodAPI::setTokens(const QHash ColnodAPI::deleteTokens(const QList &ids) @@ -205,7 +198,7 @@ std::shared_ptr ColnodAPI::deleteTokens(const QList emit partOfDataProcessFinished(); } }); - + return request; } std::shared_ptr ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data) @@ -258,18 +251,18 @@ void ColnodAPI::setUserName(const QString &userName) mUserName = userName; } -void ColnodAPI::areDataReady() +void ColnodAPI::areDataReady(std::shared_ptr data) { if (++amountData == 4) { qInfo(colnod) << tab << "-> COLNOD DATA:"; - qInfo(colnod) << tab << tab << mData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; - qInfo(colnod) << tab << tab << mData->deletedTokens.size() << "TOKENS DELETED"; - qInfo(colnod) << tab << tab << mData->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; - qInfo(colnod) << tab << tab << mData->deletedSubjects.size() << "SUBJECTS DELETED"; + qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; + qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; + qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; + qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; qInfo(colnod) << dash; - emit downloadDataFinished(mData); + emit downloadDataFinished(data); newData(); } } @@ -281,31 +274,31 @@ void ColnodAPI::isDataProcessFinished() } } -void ColnodAPI::saveUpdatedTokens(const QByteArray &responseData) +void ColnodAPI::saveUpdatedTokens(std::shared_ptr data, const QByteArray &responseData) { - mData->loadTokensFromJson(responseData); + data->loadTokensFromJson(responseData); } -void ColnodAPI::saveDeletedTokens(const QByteArray &responseData) +void ColnodAPI::saveDeletedTokens(std::shared_ptr data, const QByteArray &responseData) { QJsonDocument doc = QJsonDocument::fromJson(responseData); QJsonArray items = doc.object()["items"].toArray(); for (QJsonValueRef item : items) { - mData->deletedTokens.append(item.toString()); + data->deletedTokens.append(item.toString()); } } -void ColnodAPI::saveUpdatedSubjects(const QByteArray &responseData) +void ColnodAPI::saveUpdatedSubjects(std::shared_ptr data, const QByteArray &responseData) { - mData->loadSubjectsFormJson(responseData); + data->loadSubjectsFormJson(responseData); } -void ColnodAPI::saveDeletedSubjects(const QByteArray &responseData) +void ColnodAPI::saveDeletedSubjects(std::shared_ptr data, const QByteArray &responseData) { QJsonDocument doc = QJsonDocument::fromJson(responseData); QJsonArray items = doc.object()["items"].toArray(); for (QJsonValueRef item : items) { - mData->deletedSubjects.append(item.toString()); + data->deletedSubjects.append(item.toString()); } } diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index 5796b27..9ef2e9d 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -72,14 +72,14 @@ public: bool isValid(); private: - Q_SLOT void areDataReady(); + Q_SLOT void areDataReady(std::shared_ptr data); Q_SLOT void isDataProcessFinished(); private: - void saveUpdatedTokens(const QByteArray &responseData); - void saveUpdatedSubjects(const QByteArray &responseData); - void saveDeletedTokens(const QByteArray &responseData); - void saveDeletedSubjects(const QByteArray &responseData); + void saveUpdatedTokens(std::shared_ptr data, const QByteArray &responseData); + void saveUpdatedSubjects(std::shared_ptr data, const QByteArray &responseData); + void saveDeletedTokens(std::shared_ptr data, const QByteArray &responseData); + void saveDeletedSubjects(std::shared_ptr data, const QByteArray &responseData); void newData();