#ifndef MULTITHREADSERVER_H #define MULTITHREADSERVER_H #include "serverlmswidget.h" #include "Systems/processingsystem.h" #include class ProcessingSystem; class MultiThreadServer : public QTcpServer { Q_OBJECT public: MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,ProcessingSystem *processingSystem, DataParser *dataParser,Logger *logger, qint16 hostPort, QObject *parent = nullptr); QMap *getClientsMap() const; void updateClientList(); void disableClients(); bool startServer(); bool stopServer(); void blockAutorization() { stateBlockAutorization = blocked; } void unBlockAutorization() { stateBlockAutorization = unblocked; } EStateBlockAutorization getStateBlockAutorization() const { return stateBlockAutorization; } signals: void sigInitClient(int descriptor, ServerLMSWidget *serverWidget, UpdateController *updateController, DataParser *dataParser,Logger *logger); void signalStopSendFile(); void sigSendToLogger(QString text); public slots: void slotDisconnectClient(QString peerAddress, QString peerPort); protected: void incomingConnection(qintptr handle) override; private: ServerLMSWidget *serverLmsWidget; QMap *clientsMap; qint16 hostPort; ProcessingSystem *processingSystem; UpdateController *updateController; DataParser *dataParser; Logger *logger; EStateServer stateServer; EStateBlockAutorization stateBlockAutorization; void removeClient(int idSocket); void addClient(qintptr descriptor, ClientHandler *client); }; #endif // MULTITHREADSERVER_H