ImagingTools Core SDK
CSocket.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// ACF includes
5#include <istd/TDelPtr.h>
6
7// ImtCore includes
8#include <imtrest/IRequest.h>
9#include <imtrest/IResponse.h>
10
11
12// Qt includes
13#include <QtCore/QTimer>
14#include <QtCore/QPointer>
15#include <QtNetwork/QTcpSocket>
16#include <QtNetwork/QSslConfiguration>
17
18
19namespace imtrest
20{
21
22
23class CMultiThreadServer;
24class CSocketThread;
25
26
27class CSocket: public QObject
28{
29 Q_OBJECT
30public:
31 CSocket(CSocketThread* rootSocket, imtrest::IRequest* request, bool secureConnection, const QSslConfiguration& sslConfiguration, qintptr socketDescriptor);
32 ~CSocket();
33
34public Q_SLOTS:
35 void HandleReadyRead();
36 void Disconnected();
37 void OnSendResponse(ConstResponsePtr response);
38 void Abort();
39 void TimeOut();
40 void OnHandleSslErrors(QList<QSslError> errorList);
41
42private:
43 QTimer m_startTimer;
44 CSocketThread* m_rootSocket;
45 QPointer<QTcpSocket> m_socket;
46 istd::TDelPtr<IRequest> m_requestPtr;
47};
48
49
50} // namespace imtrest
51
52