Корректное переподключение к серверу

This commit is contained in:
2025-07-03 09:48:22 +03:00
parent 67cc236b70
commit c46ae86791
9 changed files with 146 additions and 103 deletions

View File

@@ -56,7 +56,13 @@ void TCPClient::setConnect(ServerSettings *serverSettings)
void TCPClient::setDisconnect()
{
QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
stream << PacketType::TYPE_DISABLE;
socket->disconnect();
isConnected = false;
emit sigServerDisconnect();
emit sigSendDebugLog("Server disabled");

View File

@@ -26,6 +26,7 @@ public:
explicit TCPClient(QObject *parent = 0);
void initialize(RecognizeSystem *recognize,SendSystem *sendSystem);
void setConnect(ServerSettings *serverSettings);
void setDisconnect();
void waitRead(int time);
QTcpSocket* getSocket();
@@ -54,9 +55,7 @@ private:
SendSystem *sendSystem;
QTcpSocket *socket;
RecognizeSystem *recognizeSystem;
bool isConnected;
void setDisconnect();
bool isConnected;
};
#endif // TCPCLIENT_H

View File

@@ -119,6 +119,12 @@ void ConnectorToServer::SetConnectToServer()
emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
}
void ConnectorToServer::StopConnectToServer()
{
emit sigStopConnect();
clearListModelDB();
}
QByteArray ConnectorToServer::getListTaskFimArray()
{
return listTaskFimArray;
@@ -287,17 +293,6 @@ void ConnectorToServer::showVersionSelect()
emit sigSendAnswerToServer(answer);
}
/*
void ConnectorToServer::slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
QList<Trainee>* listTrainees,
QList<Group>* listGroups)
{
this->listInstructors = *listInstructors;
this->listTrainees = *listTrainees;
this->listGroups = *listGroups;
emit signal_UpdateDB(true, true);
}*/
void ConnectorToServer::slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors)
{
this->listInstructors = listInstructors;
@@ -320,13 +315,13 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTra
void ConnectorToServer::slot_AnswerQueryToDB_ListComputers(QList<Computer> listComputers)
{
this->listComputers = listComputers;
//emit signal_UpdateDB(false, true);
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListClassrooms(QList<Classroom> listClassrooms)
{
this->listClassrooms = listClassrooms;
//emit signal_UpdateDB(false, true);
//emit signal_UpdateDB(false, true); //TODO
}
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
@@ -384,11 +379,6 @@ void ConnectorToServer::initialize()
emit sigInitializeClient(recognizeSystem,sendSystem,connectionThread);
SetConnectToServer();
//emit sigSetConnect(dataParser->getServerSettings(),connectionThread);
// QByteArray answer = dataParser->xmlAnswer_notify()
// sendSystem->sendXMLAnswer()
}
void ConnectorToServer::activateLoadAnimation(bool flag)
@@ -407,6 +397,8 @@ void ConnectorToServer::bindConnection()
{
connect(this,&ConnectorToServer::sigInitializeClient,client,&TCPClient::initialize,Qt::AutoConnection);
connect(this,&ConnectorToServer::sigSetConnect,client,&TCPClient::setConnect,Qt::AutoConnection);
connect(this,&ConnectorToServer::sigStopConnect,client,&TCPClient::setDisconnect,Qt::AutoConnection);
connect(this,&ConnectorToServer::signal_sendXMLmsgGUItoServer,sendSystem,&SendSystem::sendXMLmsgGUItoServer);
connect(this,&ConnectorToServer::sigSendAnswerToServer,sendSystem,&SendSystem::sendXMLAnswer,Qt::AutoConnection);
@@ -466,3 +458,17 @@ void ConnectorToServer::createObjects()
connectionThread->start();
connectionThread->setPriority(QThread::HighestPriority);
}
void ConnectorToServer::clearListModelDB()
{
listInstructors.clear();
listGroups.clear();
listTrainees.clear();
listComputers.clear();
listClassrooms.clear();
mapTasksAMM.clear();
mapTasksFIM.clear();
listTaskFimArray.clear();
listTaskAmmArray.clear();
}

View File

@@ -32,6 +32,7 @@ public:
bool sendQueryTasksXML(QString type);
void SetConnectToServer();
void StopConnectToServer();
public:
QByteArray getListTaskFimArray();
@@ -66,11 +67,8 @@ public:
ServerSettings getServerSettings();
bool getIsConnected();
public slots:
/*void slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
QList<Trainee>* listTrainees,
QList<Group>* listGroups);*/
public slots:
void slot_AnswerQueryToDB_ListInstructors(QList<Instructor> listInstructors);
void slot_AnswerQueryToDB_ListGroups(QList<Group> listGroups);
void slot_AnswerQueryToDB_ListTrainees(QList<Trainee> listTrainees);
@@ -87,6 +85,7 @@ public slots:
signals:
void sigSetConnect(ServerSettings* serverSettings,QThread *thread);
void sigStopConnect();
void sigInitializeClient(RecognizeSystem *recognizeSystem,
SendSystem *sendSystem,
QThread *thread);
@@ -116,6 +115,9 @@ private:
void bindConnection();
void createObjects();
//Очистка списочной модели БД СУО
void clearListModelDB();
private:
QWidget* parentWidget;
QThread *connectionThread;