fix: create NetworkManager statics in init() (#5254)

This commit is contained in:
nerix
2024-03-23 11:56:42 +01:00
committed by GitHub
parent e4ea9af004
commit 044d457d20
6 changed files with 48 additions and 30 deletions
+23 -6
View File
@@ -4,19 +4,36 @@
namespace chatterino {
QThread NetworkManager::workerThread;
QNetworkAccessManager NetworkManager::accessManager;
QThread *NetworkManager::workerThread = nullptr;
QNetworkAccessManager *NetworkManager::accessManager = nullptr;
void NetworkManager::init()
{
NetworkManager::accessManager.moveToThread(&NetworkManager::workerThread);
NetworkManager::workerThread.start();
assert(!NetworkManager::workerThread);
assert(!NetworkManager::accessManager);
NetworkManager::workerThread = new QThread;
NetworkManager::workerThread->start();
NetworkManager::accessManager = new QNetworkAccessManager;
NetworkManager::accessManager->moveToThread(NetworkManager::workerThread);
}
void NetworkManager::deinit()
{
NetworkManager::workerThread.quit();
NetworkManager::workerThread.wait();
assert(NetworkManager::workerThread);
assert(NetworkManager::accessManager);
if (NetworkManager::workerThread)
{
NetworkManager::workerThread->quit();
NetworkManager::workerThread->wait();
}
delete NetworkManager::accessManager;
NetworkManager::accessManager = nullptr;
delete NetworkManager::workerThread;
NetworkManager::workerThread = nullptr;
}
} // namespace chatterino
+2 -2
View File
@@ -10,8 +10,8 @@ class NetworkManager : public QObject
Q_OBJECT
public:
static QThread workerThread;
static QNetworkAccessManager accessManager;
static QThread *workerThread;
static QNetworkAccessManager *accessManager;
static void init();
static void deinit();
+1 -1
View File
@@ -48,7 +48,7 @@ void loadUncached(std::shared_ptr<NetworkData> &&data)
NetworkRequester requester;
auto *worker = new NetworkTask(std::move(data));
worker->moveToThread(&NetworkManager::workerThread);
worker->moveToThread(NetworkManager::workerThread);
QObject::connect(&requester, &NetworkRequester::requestUrl, worker,
&NetworkTask::run);
+9 -9
View File
@@ -54,41 +54,41 @@ QNetworkReply *NetworkTask::createReply()
{
const auto &data = this->data_;
const auto &request = this->data_->request;
auto &accessManager = NetworkManager::accessManager;
auto *accessManager = NetworkManager::accessManager;
switch (this->data_->requestType)
{
case NetworkRequestType::Get:
return accessManager.get(request);
return accessManager->get(request);
case NetworkRequestType::Put:
return accessManager.put(request, data->payload);
return accessManager->put(request, data->payload);
case NetworkRequestType::Delete:
return accessManager.deleteResource(data->request);
return accessManager->deleteResource(data->request);
case NetworkRequestType::Post:
if (data->multiPartPayload)
{
assert(data->payload.isNull());
return accessManager.post(request,
data->multiPartPayload.get());
return accessManager->post(request,
data->multiPartPayload.get());
}
else
{
return accessManager.post(request, data->payload);
return accessManager->post(request, data->payload);
}
case NetworkRequestType::Patch:
if (data->multiPartPayload)
{
assert(data->payload.isNull());
return accessManager.sendCustomRequest(
return accessManager->sendCustomRequest(
request, "PATCH", data->multiPartPayload.get());
}
else
{
return NetworkManager::accessManager.sendCustomRequest(
return NetworkManager::accessManager->sendCustomRequest(
request, "PATCH", data->payload);
}
}