6#include <QtCore/QThread>
7#include <QtCore/QMutex>
10#include <imtrest/IRequestServlet.h>
11#include <imtrest/ITransport.h>
12#include <imtrest/CSocket.h>
18class CMultiThreadServer;
22 virtual public IRequestServlet,
23 virtual public ITransport
34 explicit CSocketThread(qintptr ID,
bool secureConnection,
const QSslConfiguration& sslConfiguration, CMultiThreadServer *parent);
35 void SetSocketDescriptor(qintptr socketDescriptor);
36 qintptr GetSocketDescriptor();
37 void SetSocketStatus(Status socketStatus);
38 Status GetSocketStatus();
39 QByteArray GetRequestId();
40 imtrest::IRequestServlet* GetRequestServlet();
42 [[nodiscard]]
bool IsSecureConnection()
const;
43 void EnableSecureConnection(
bool isSecureConnection =
true);
45 virtual imtrest::IRequestUniquePtr CreateRequest()
const;
48 virtual void run()
override;
51 virtual bool IsCommandSupported(
const QByteArray& commandId)
const override;
52 virtual ConstResponsePtr ProcessRequest(
const IRequest& request,
const QByteArray& subCommandId = QByteArray())
const override;
55 virtual bool SendResponse(ConstResponsePtr& response)
const override;
56 virtual bool SendRequest(ConstRequestPtr& request)
const override;
59 void Error(QTcpSocket::SocketError socketerror);
60 void SocketDisconnected(QByteArray requestId);
61 void OnSendResponse(ConstResponsePtr response)
const;
65 CMultiThreadServer* m_server;
66 qintptr m_socketDescriptor;
68 imtrest::IRequestServlet* m_requestHandlerPtr;
69 mutable QMutex m_socketDescriptorMutex;
70 mutable QMutex m_statusMutex;
72 istd::TDelPtr<CSocket> m_socket;
73 bool m_isSecureConnection;
74 const QSslConfiguration& m_sslConfiguration;
76 mutable QByteArray m_requestId;