Multi brokers MQTT semble fonctionner

This commit is contained in:
2025-05-03 15:01:06 -04:00
parent 9e43e9c748
commit e298577c2f
17 changed files with 780 additions and 558 deletions
@@ -175,11 +175,12 @@ void CMQTTClientWrapper::StateChanged()
{
//Connection attempt failed, just restart the timer...
mMQTTReconnectTimer->start(MQTT_CLIENT_RECONNECT_TIMEOUT);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Client MQTT déconnecté pendant une reconnexion. ","CMQTTClientWrapper",true,1);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Client MQTT %1 déconnecté pendant une reconnexion. ").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,1);
}
else
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Client MQTT déconnecté.","CMQTTClientWrapper",true,1);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Client MQTT %1 déconnecté.").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,1);
mProgramPtr->SetMQTTConnectionSatusRequest(false);
#ifndef ENABLE_DEVELOPMENT_DEBUG_TOOLS
mMQTTReconnectTimer->start(MQTT_CLIENT_RECONNECT_TIMEOUT);
@@ -195,7 +196,7 @@ void CMQTTClientWrapper::StateChanged()
if(mDisconnectionIsVoluntary == false)
{
mMessagesQueueMode = MQTT_QUEUE_MSG_MODE; //We're disconnected, queue all the messages.
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Passage en mode buffering des messages MQTT","CMQTTClientWrapper",true,1);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Passage en mode buffering des messages MQTT pour %1").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,1);
mBufferingModeText = "Buffering";
UpdateGUIBufferingStatus();
}
@@ -207,11 +208,11 @@ void CMQTTClientWrapper::StateChanged()
mProgramPtr->SetMQTTConnectionSatusRequest(true);
mMQTTReconnectTimer->stop();
mIsClientConnecting = false;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Client MQTT connecté.","CMQTTClientWrapper",true,1);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Client MQTT %1 connecté.").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,1);
if(mMQTTMessagesQueue.isEmpty() == false)
{
mMessagesQueueMode = MQTT_QUEUE_MSG_MODE; //Stay in (or enter) queue mode until we empty the buffer
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("FIFO non vide, passage au mode de vidage de la FIFO","CMQTTClientWrapper",true,2);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("FIFO non vide, passage au mode de vidage de la FIFO pour %1").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,2);
mBufferingModeText = "Buffering";
mCircularBufferStatusText = QString("%2/%1 messages (0%3\%)").arg(MQTT_CLIENT_MSG_QUEUE_SIZE).arg(mMQTTMessagesQueue.size()).arg((mMQTTMessagesQueue.size()/MQTT_CLIENT_MSG_QUEUE_SIZE)*100);
@@ -234,7 +235,8 @@ void CMQTTClientWrapper::StateChanged()
case QMqttClient::Connecting:
{
mIsClientConnecting = true;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Client MQTT en cours de connexion... ","CMQTTClientWrapper",true,1);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Client MQTT %1 en cours de connexion... ").arg(mMQTTParams.mMQTTBrokerHostName),"CMQTTClientWrapper",true,1);
mProgramPtr->SetMQTTConnectionSatusRequest(false);
break;
}
}
@@ -414,6 +416,32 @@ void CMQTTClientWrapper::MQTTClientError(QMqttClient::ClientError error)
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Erreur du client MQTT: %1").arg(error),"CMQTTClientWrapper",true,2);
}
bool CMQTTClientWrapper::IsMQTTClientConnected()
{
if(mMQTTClient.state() != QMqttClient::Connected)
return false;
else
return true;
}
QString CMQTTClientWrapper::GetMQTTClientConnectionState()
{
QString StateText;
if(mMQTTClient.state() == QMqttClient::Connected)
{
StateText = QString("%1 : Connecté").arg(mMQTTParams.mMQTTBrokerHostName);
}
else if(mMQTTClient.state() == QMqttClient::Connecting)
{
StateText = QString("%1 : En connexion...").arg(mMQTTParams.mMQTTBrokerHostName);
}
else
{
StateText = QString("%1 : Déconnecté").arg(mMQTTParams.mMQTTBrokerHostName);
}
return StateText;
}
//This function is used only when flushing the msg queue
void CMQTTClientWrapper::MQTTMessageSent(qint32 MsgID)
{
@@ -41,6 +41,8 @@ public:
int StartMQTTClient();
int StopMQTTClient();
quint64 GetMQTTServerPresenceCANMask();
bool IsMQTTClientConnected();
QString GetMQTTClientConnectionState();
#ifdef ENABLE_DEVELOPMENT_DEBUG_TOOLS
int ForceMQTTClientDisconnection(bool Disconnect);