ImagingTools Core SDK
CRequestSender.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QCoreApplication>
7#include <QtCore/QTimer>
8#include <QtNetwork/QNetworkAccessManager>
9
10
11namespace imtcom
12{
13
14
18class CRequestSender: public QObject
19{
20public:
21 static QNetworkReply* DoSyncGet(const QNetworkRequest& request, int timeout);
22 static QNetworkReply* DoSyncPut(const QNetworkRequest& request, const QByteArray& data, int timeout);
23 static QNetworkReply* DoSyncPost(const QNetworkRequest& request, const QByteArray& data, int timeout);
24 static QNetworkReply* DoSyncCustomRequest(const QNetworkRequest& request, const QByteArray& verb, const QByteArray& data, int timeout);
25
26private:
27 static void EnsureNetworkAccessManager();
28
29private:
30 class NetworkOperation
31 {
32 public:
33 NetworkOperation() = delete;
34 NetworkOperation(int timeout);
35 ~NetworkOperation();
36
37 QEventLoop connectionLoop;
38 QTimer timer;
39 };
40
41 static thread_local std::unique_ptr<QNetworkAccessManager> s_networkManagerPtr;
42};
43
44
45} // namespace imtcom
46
47
Server Communication and Connection Management Module.