Files
RRJServer/LibServer/multithreadserver/multithreadserver.h
2026-01-22 11:48:21 +03:00

76 lines
2.0 KiB
C++

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