Disconnect added (finally)
This commit is contained in:
@@ -41,14 +41,20 @@ MqttClient::~MqttClient()
|
|||||||
{
|
{
|
||||||
close();
|
close();
|
||||||
delete client;
|
delete client;
|
||||||
|
Serial << "Client deleted" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttClient::close()
|
void MqttClient::close(bool bSendDisconnect)
|
||||||
{
|
{
|
||||||
debug("close " << id().c_str());
|
debug("close " << id().c_str());
|
||||||
mqtt_connected = false;
|
mqtt_connected = false;
|
||||||
if (client)
|
if (client)
|
||||||
{
|
{
|
||||||
|
if (bSendDisconnect and client->connected())
|
||||||
|
{
|
||||||
|
message.create(MqttMessage::Type::Disconnect);
|
||||||
|
message.sendTo(this);
|
||||||
|
}
|
||||||
client->stop();
|
client->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -452,6 +458,14 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MqttMessage::Type::Disconnect:
|
||||||
|
// TODO should discard any will message
|
||||||
|
if (!mqtt_connected) break;
|
||||||
|
mqtt_connected = false;
|
||||||
|
close(false);
|
||||||
|
bclose=false;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
bclose=true;
|
bclose=true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class MqttMessage
|
|||||||
UnSubscribe = 0xA0,
|
UnSubscribe = 0xA0,
|
||||||
PingReq = 0xC0,
|
PingReq = 0xC0,
|
||||||
PingResp = 0xD0,
|
PingResp = 0xD0,
|
||||||
|
Disconnect = 0xE0
|
||||||
};
|
};
|
||||||
enum State
|
enum State
|
||||||
{
|
{
|
||||||
@@ -137,7 +138,7 @@ class MqttClient
|
|||||||
void id(std::string& new_id) { clientId = new_id; }
|
void id(std::string& new_id) { clientId = new_id; }
|
||||||
|
|
||||||
void loop();
|
void loop();
|
||||||
void close();
|
void close(bool bSendDisconnect=true);
|
||||||
void setCallback(CallBack fun) {callback=fun; };
|
void setCallback(CallBack fun) {callback=fun; };
|
||||||
|
|
||||||
// Publish from client to the world
|
// Publish from client to the world
|
||||||
|
|||||||
Reference in New Issue
Block a user