Disconnect added (finally)
This commit is contained in:
@@ -41,14 +41,20 @@ MqttClient::~MqttClient()
|
||||
{
|
||||
close();
|
||||
delete client;
|
||||
Serial << "Client deleted" << endl;
|
||||
}
|
||||
|
||||
void MqttClient::close()
|
||||
void MqttClient::close(bool bSendDisconnect)
|
||||
{
|
||||
debug("close " << id().c_str());
|
||||
mqtt_connected = false;
|
||||
if (client)
|
||||
{
|
||||
if (bSendDisconnect and client->connected())
|
||||
{
|
||||
message.create(MqttMessage::Type::Disconnect);
|
||||
message.sendTo(this);
|
||||
}
|
||||
client->stop();
|
||||
}
|
||||
|
||||
@@ -452,6 +458,14 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag
|
||||
}
|
||||
break;
|
||||
|
||||
case MqttMessage::Type::Disconnect:
|
||||
// TODO should discard any will message
|
||||
if (!mqtt_connected) break;
|
||||
mqtt_connected = false;
|
||||
close(false);
|
||||
bclose=false;
|
||||
break;
|
||||
|
||||
default:
|
||||
bclose=true;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user