ImagingTools Core SDK
CHttpRootServletComp.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/QMutex>
7
8// ACF includes
9#include <ilog/TLoggerCompWrap.h>
10
11// ImtCore includes
12#include <imtrest/IRequestServlet.h>
13
14
15namespace imtrest
16{
17
18
19class CHttpRootServletComp:
20 public ilog::CLoggerComponentBase,
21 virtual public IRequestServlet
22{
23public:
24 typedef ilog::CLoggerComponentBase BaseClass;
25
26 I_BEGIN_COMPONENT(CHttpRootServletComp);
27 I_REGISTER_INTERFACE(IRequestServlet);
28 I_ASSIGN_MULTI_0(m_requestHandlersCompPtr, "RequestHandlers", "List of request handlers", false);
29 I_ASSIGN(m_autoCompressionAttrPtr, "AutoCompression", "Automatic data compression", true, false);
30 I_ASSIGN(m_compressionLevelAttrPtr, "CompressionLevel", "Compression level for automatic compression", true, 8);
31 I_END_COMPONENT
32
33 // reimplemented (IRequestServlet)
34 virtual bool IsCommandSupported(const QByteArray& commandId) const override;
35 virtual imtrest::ConstResponsePtr ProcessRequest(const IRequest& request, const QByteArray& subCommandId = QByteArray()) const override;
36
37protected:
38 enum EncodingType
39 {
40 ET_NONE,
41 ET_GZIP,
42 ET_DEFLATE
43 };
44
45 virtual IRequestServlet* FindRequestHandler(const QByteArray& commandId) const;
46
47 // reimplemented (icomp::CComponentBase)
48 virtual void OnComponentCreated() override;
49
50private:
51 I_MULTIATTR(QByteArray, m_commandIdsAttrPtr);
52 I_MULTIREF(IRequestServlet, m_requestHandlersCompPtr);
53 I_ATTR(bool, m_autoCompressionAttrPtr);
54 I_ATTR(int, m_compressionLevelAttrPtr);
55
56 typedef QMap<QByteArray, IRequestServlet*> HandlersMap;
57
58 HandlersMap m_handlersMap;
59 mutable QMutex m_handlersMapMutex;
60};
61
62
63} // namespace imtrest
64
65