6#include <QtCore/QMutex>
9#include <ilog/TLoggerCompWrap.h>
12#include <imtrest/IRequestServlet.h>
13#include <imtrest/IResponseDispatcher.h>
14#include <imtrest/CWorkerThread.h>
21class CWorkerManagerComp:
23 public ilog::CLoggerComponentBase,
24 public imtrest::IRequestServlet
28 typedef ilog::CLoggerComponentBase BaseClass;
30 I_BEGIN_COMPONENT(CWorkerManagerComp);
31 I_REGISTER_INTERFACE(IRequestServlet)
32 I_ASSIGN(m_requestHandlerCompPtr,
"RequestHandler",
"Request handler registered for the server",
true,
"RequestHandler");
33 I_ASSIGN(m_requestManagerCompPtr,
"RequestManager",
"Request manager registered for the server",
true,
"RequestManager");
34 I_ASSIGN(m_threadsLimitAttrPtr,
"ThreadsLimit",
"Limit of threads",
true, 5);
39 IRequestServletPtr CreateServlet();
40 bool SendResponse(
const QByteArray& requestId, ConstResponsePtr& response);
43 virtual bool IsCommandSupported(
const QByteArray& commandId)
const override;
44 virtual ConstResponsePtr ProcessRequest(
const IRequest& request,
const QByteArray& subCommandId = QByteArray())
const override;
47 void Start(
const IRequest* request);
50 void OnFinish(
const IRequest* request,
const QByteArray& subCommandId);
54 I_FACT(imtrest::IRequestServlet, m_requestHandlerCompPtr);
56 I_ATTR(
int, m_threadsLimitAttrPtr);
58 mutable QList<CWorkerThread*> m_workerList;
59 mutable QList<const IRequest*> m_requestList;
60 mutable QMutex m_requestListMutex;