6#include <QtNetwork/QTcpServer>
7#include <QtNetwork/QTcpSocket>
10#include <istd/TPointerVector.h>
11#include <ibase/TRuntimeStatusHanderCompWrap.h>
12#include <ilog/TLoggerCompWrap.h>
13#include <istd/TDelPtr.h>
14#include <iprm/IParamsSet.h>
15#include <ifile/IFileNameParam.h>
16#include <imod/CMultiModelDispatcherBase.h>
19#include <imtcom/IServerConnectionInterface.h>
20#include <imtrest/IRequest.h>
21#include <imtrest/IRequestServlet.h>
22#include <imtrest/IProtocolEngine.h>
23#include <imtrest/IResponseDispatcher.h>
24#include <imtrest/IServer.h>
25#include <imtcom/ISslConfigurationManager.h>
32class CMultiThreadServer;
41 public ibase::TRuntimeStatusHanderCompWrap<ilog::CLoggerComponentBase>,
42 private imod::CMultiModelDispatcherBase,
48 typedef ibase::TRuntimeStatusHanderCompWrap<ilog::CLoggerComponentBase> BaseClass;
49 typedef imod::CMultiModelDispatcherBase BaseClass2;
54 I_ASSIGN(m_requestHandlerCompPtr,
"RequestHandler",
"Request handler registered for the server",
true,
"RequestHandler");
55 I_ASSIGN(m_protocolEngineCompPtr,
"ProtocolEngine",
"Protocol engine used in the server",
true,
"ProtocolEngine");
56 I_ASSIGN(m_threadsLimitAttrPtr,
"ThreadsLimit",
"Limit of threads",
true, 5);
57 I_ASSIGN(m_startServerOnCreateAttrPtr,
"StartServerOnCreate",
"If enabled, the server will be started on after component creation",
true,
true);
58 I_ASSIGN(m_serverConnnectionInterfaceCompPtr,
"ServerInterface",
"Parameter providing the server connection interface to be listened",
true,
"ServerInterface");
59 I_ASSIGN(m_sslConfigurationCompPtr,
"SslConfiguration",
"SSL Configuration is used by networking classes to relay information about an open SSL connection and to allow the server to control certain features of that connection.",
false,
"SslConfiguration")
60 I_ASSIGN_TO(m_sslConfigurationModelCompPtr, m_sslConfigurationCompPtr,
false)
61 I_ASSIGN(m_sslConfigurationManagerCompPtr,
"SslConfigurationManager",
"SSL configuration manager, used to create an SSL configuration for server",
false,
"SslConfigurationManager")
67 imtrest::IRequestServlet* GetRequestServlet();
69 int GetThreadsLimit();
73 virtual void OnModelChanged(
int modelId,
const istd::IChangeable::ChangeSet& changeSet)
override;
76 virtual void OnSystemShutdown()
override;
79 virtual void OnComponentCreated()
override;
82 virtual bool SendResponse(
const QByteArray& requestId, ConstResponsePtr& response)
const override;
83 virtual bool SendRequest(
const QByteArray& requestId, ConstRequestPtr& request)
const override;
86 virtual bool StartServer()
override;
87 virtual bool StopServer()
override;
88 virtual ServerStatus GetServerStatus()
const override;
91 bool StartListening(
const QHostAddress& address = QHostAddress::Any, quint16 port = 0);
92 bool EnsureServerStarted();
95 void OnNewThreadConnection(
const IRequest* request,
const QByteArray& subCommandId);
98 I_REF(imtrest::IRequestServlet, m_requestHandlerCompPtr);
101 I_REF(iprm::IParamsSet, m_sslConfigurationCompPtr);
102 I_REF(imod::IModel, m_sslConfigurationModelCompPtr);
103 I_REF(imtcom::ISslConfigurationManager, m_sslConfigurationManagerCompPtr);
105 I_ATTR(
int, m_threadsLimitAttrPtr);
106 I_ATTR(
bool, m_startServerOnCreateAttrPtr);
107 I_ATTR(
bool, m_isMultiThreadingAttrPtr);
110 istd::TDelPtr<CMultiThreadServer> m_serverPtr;
112 typedef istd::TPointerVector<IRequest> Requests;
115 bool m_isInitialized =
false;
Interface for describing server connection configuration with multi-protocol support.