Skip to content

Commit d8fc923

Browse files
authored
Merge pull request #20 from QuasarApp/fix_multisending
Fix multisending
2 parents 24c8b4e + 03782ba commit d8fc923

File tree

8 files changed

+51
-16
lines changed

8 files changed

+51
-16
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ set(QTBOT_PACKAGE_ID "quasarapp.core.qTbot")
3636
option(QTBOT_TESTS "This option disables or enables tests of the ${PROJECT_NAME} project" ON)
3737
option(QTBOT_EXAMPLE "This option disables or enables example app of the ${PROJECT_NAME} project" ON)
3838
option(QTBOT_PRINT_RQUESTS "This option disables or enables printing requests" OFF)
39+
option(QTBOT_PRINT_ERRORS "This option disables or enables printing errors" ON)
3940

4041
if (ANDROID OR IOS OR QA_WASM32)
4142
set(QTBOT_TESTS OFF CACHE BOOL "This option force disbled for ANDROID IOS QA_WASM32 and Not Qt projects" FORCE)

src/qTbot/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ if (QTBOT_PRINT_RQUESTS)
1414
add_definitions(-DQTBOT_PRINT_RQUESTS)
1515
endif()
1616

17+
if (QTBOT_PRINT_ERRORS)
18+
add_definitions(-DQTBOT_PRINT_ERRORS)
19+
endif()
20+
21+
1722
file(GLOB_RECURSE SOURCE_CPP
1823
"src/*.cpp"
1924
"src/*.h"

src/qTbot/src/private/requests/telegrameditmessage.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ TelegramEditMessage::TelegramEditMessage(const QVariant &idEditedMessage,
1616

1717
setRequest("editMessageText");
1818
addArg("message_id", idEditedMessage);
19+
setPriority(args.requestPriority);
20+
1921
}
2022

2123
}

src/qTbot/src/private/requests/telegramsendcontact.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ TelegramSendContact::TelegramSendContact(const TelegramArgs &args,
1919
addArg("first_name", firstName);
2020
addArg("last_name", lastName);
2121
addArg("phone_number", phone);
22+
setPriority(args.requestPriority);
23+
2224

2325
}
2426

src/qTbot/src/private/requests/telegramsendfile.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ qTbot::TelegramSendFile::TelegramSendFile(const QString &request,
1919
const ExtraJsonObjects& extraObjects
2020
):
2121
TelegramSingleRquest(request, args.toMap(true)) {
22+
setPriority(args.requestPriority);
2223

2324

2425
for (auto it = extraObjects.begin(); it != extraObjects.end(); it = std::next(it)) {
@@ -33,6 +34,7 @@ qTbot::TelegramSendFile::TelegramSendFile(const QString &request,
3334
const TelegramArgs &args,
3435
const QHash<QString, QSharedPointer<QJsonObject> > &extraObjects):
3536
TelegramSingleRquest(request, args.toMap(true)) {
37+
setPriority(args.requestPriority);
3638

3739
QFile readFile(file.absoluteFilePath());
3840
if (!readFile.open(QIODevice::ReadOnly)) {

src/qTbot/src/private/requests/telegramsendlocation.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ TelegramSendLocation::TelegramSendLocation(const TelegramArgs &args,
1818

1919
addArg("latitude", latitude);
2020
addArg("longitude", longitude);
21+
setPriority(args.requestPriority);
22+
2123

2224
for (auto it = extraObjects.begin(); it != extraObjects.end(); it = std::next(it)) {
2325
addArg(it.key(), QJsonDocument(*it.value()).toJson(QJsonDocument::Compact));

src/qTbot/src/public/qTbot/ibot.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ QNetworkReply* IBot::sendRquestImpl(const QSharedPointer<iRequest> &rquest) {
6767
#endif
6868

6969
QNetworkReply* networkReplay = nullptr;
70-
QSharedPointer<QHttpMultiPart> httpData;
7170

7271
switch (rquest->method()) {
7372
case iRequest::Get: {
@@ -84,9 +83,10 @@ QNetworkReply* IBot::sendRquestImpl(const QSharedPointer<iRequest> &rquest) {
8483
case iRequest::Upload:
8584
QNetworkRequest netRequest(url);
8685

87-
httpData = rquest->argsToMultipartFormData();
86+
auto httpData = rquest->argsToMultipartFormData();
8887
if (httpData) {
8988
networkReplay = _manager->post(netRequest, httpData.data());
89+
connect(networkReplay, &QNetworkReply::destroyed, [httpData](){});
9090

9191
} else {
9292
return {};
@@ -116,7 +116,6 @@ void IBot::setParallelActiveNetworkThreads(int newParallelActiveNetworkThreads)
116116

117117
void IBot::setCurrentParallelActiveNetworkThreads(int newParallelActiveNetworkThreads) {
118118
_currentParallelActiveNetworkThreads = newParallelActiveNetworkThreads;
119-
qDebug () << "current network active requests count : " << _currentParallelActiveNetworkThreads;
120119
}
121120

122121
int IBot::reqestLimitPerSecond() const {
@@ -136,7 +135,11 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
136135
_requestQueue.insert(makeKey(rquest->priority()),
137136
RequestData{rquest, "", responce});
138137

139-
_requestExecutor->start();
138+
if (!_requestExecutor->isActive()) {
139+
handleEcxecuteRequest();
140+
_requestExecutor->start();
141+
142+
}
140143

141144
return responce->future();
142145
}
@@ -146,10 +149,15 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest,
146149
const QString &pathToResult) {
147150
auto&& responce = QSharedPointer<QPromise<QByteArray>>::create();
148151
responce->start();
152+
149153
_requestQueue.insert(makeKey(rquest->priority()),
150154
RequestData{rquest, pathToResult, responce});
151155

152-
_requestExecutor->start();
156+
if (!_requestExecutor->isActive()) {
157+
handleEcxecuteRequest();
158+
_requestExecutor->start();
159+
160+
}
153161

154162
return responce->future();
155163

@@ -218,7 +226,12 @@ void IBot::sendRequestPrivate(const QSharedPointer<iRequest> &rquest,
218226
promise->finish();
219227

220228
} else {
221-
promise->setException(HttpException(networkReplay->error(), networkReplay->errorString().toLatin1() + networkReplay->readAll()));
229+
QByteArray msg = networkReplay->errorString().toLatin1() + networkReplay->readAll();
230+
promise->setException(HttpException(networkReplay->error(), msg));
231+
#ifdef QTBOT_PRINT_ERRORS
232+
qCritical() << msg;
233+
#endif
234+
222235
}
223236

224237
setCurrentParallelActiveNetworkThreads(_currentParallelActiveNetworkThreads - 1);
@@ -256,7 +269,11 @@ void IBot::sendRequestPrivate(const QSharedPointer<iRequest> &rquest,
256269
connect(networkReplay, &QNetworkReply::finished, [this, promise, networkReplay, pathToResult](){
257270

258271
if (networkReplay->error() == QNetworkReply::NoError) {
259-
promise->setException(HttpException(networkReplay->error(), networkReplay->errorString().toLatin1()));
272+
QByteArray msg = networkReplay->errorString().toLatin1();
273+
promise->setException(HttpException(networkReplay->error(), msg));
274+
#ifdef QTBOT_PRINT_ERRORS
275+
qCritical() << msg;
276+
#endif
260277
} else {
261278
promise->addResult(pathToResult.toUtf8()); // wil not work with UTF 8 path names
262279
promise->finish();

src/qTbot/src/public/qTbot/itelegrambot.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ QFuture<QByteArray> ITelegramBot::getFile(const QString &fileId, FileType fileTy
299299

300300
if (!localFilePath.isEmpty()) {
301301
QPromise<QByteArray> fileDataResult;
302+
fileDataResult.start();
302303

303304
if (fileType == FileType::Ram) {
304305
QFile localFile(localFilePath);
@@ -353,18 +354,21 @@ QFuture<QByteArray> ITelegramBot::getFile(const QString &fileId, FileType fileTy
353354
}
354355

355356
future.then([this, fileId, fileType, longWay](const QByteArray& header){
356-
handleFileHeader(header);
357+
handleFileHeader(header);
357358

358-
auto&& future = getFile(fileId, fileType);
359+
auto&& future = getFile(fileId, fileType);
359360

360-
if (!future.isValid()) {
361-
longWay->setException(InternalException("Failed to wrote file into internal cache!"));
362-
return;
363-
};
361+
if (!future.isValid()) {
362+
longWay->setException(InternalException("Failed to wrote file into internal cache!"));
363+
return;
364+
};
364365

365-
future.then([longWay](const QByteArray& data){
366-
longWay->addResult(data);
367-
});
366+
future.then([longWay](const QByteArray& data){
367+
longWay->addResult(data);
368+
longWay->finish();
369+
}).onFailed([longWay](const QException& exep){
370+
longWay->setException(exep);
371+
});
368372

369373

370374
}).onFailed([longWay](const QException& exep){

0 commit comments

Comments
 (0)