mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-15 16:36:52 +01:00
@@ -22,7 +22,7 @@ using namespace MQTTSNGW;
|
||||
|
||||
MQTTGWConnectionHandler::MQTTGWConnectionHandler(Gateway* gateway)
|
||||
{
|
||||
_gateway = gateway;
|
||||
_gateway = gateway;
|
||||
}
|
||||
|
||||
MQTTGWConnectionHandler::~MQTTGWConnectionHandler()
|
||||
@@ -30,70 +30,79 @@ MQTTGWConnectionHandler::~MQTTGWConnectionHandler()
|
||||
|
||||
}
|
||||
|
||||
void MQTTGWConnectionHandler::handleConnack(Client* client, MQTTGWPacket* packet)
|
||||
void MQTTGWConnectionHandler::handleConnack(Client* client,
|
||||
MQTTGWPacket* packet)
|
||||
{
|
||||
uint8_t rc = MQTT_SERVER_UNAVAILABLE;
|
||||
Connack resp;
|
||||
packet->getCONNACK(&resp);
|
||||
uint8_t rc = MQTT_SERVER_UNAVAILABLE;
|
||||
Connack resp;
|
||||
packet->getCONNACK(&resp);
|
||||
|
||||
/* convert MQTT ReturnCode to MQTT-SN one */
|
||||
if (resp.rc == MQTT_CONNECTION_ACCEPTED)
|
||||
{
|
||||
rc = MQTTSN_RC_ACCEPTED;
|
||||
}
|
||||
else if (resp.rc == MQTT_UNACCEPTABLE_PROTOCOL_VERSION)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(" ClientID : %s Requested Protocol version is not supported.\n", client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_IDENTIFIER_REJECTED)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(" ClientID : %s ClientID is collect UTF-8 but not allowed by the Server.\n",
|
||||
client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_SERVER_UNAVAILABLE)
|
||||
{
|
||||
rc = MQTTSN_RC_REJECTED_CONGESTED;
|
||||
WRITELOG(" ClientID : %s The Network Connection has been made but the MQTT service is unavailable.\n",
|
||||
client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_BAD_USERNAME_OR_PASSWORD)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(" Gateway Configuration Error: The data in the user name or password is malformed.\n");
|
||||
}
|
||||
else if (resp.rc == MQTT_NOT_AUTHORIZED)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(" Gateway Configuration Error: The Client is not authorized to connect.\n");
|
||||
}
|
||||
/* convert MQTT ReturnCode to MQTT-SN one */
|
||||
if (resp.rc == MQTT_CONNECTION_ACCEPTED)
|
||||
{
|
||||
rc = MQTTSN_RC_ACCEPTED;
|
||||
}
|
||||
else if (resp.rc == MQTT_UNACCEPTABLE_PROTOCOL_VERSION)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(
|
||||
" ClientID : %s Requested Protocol version is not supported.\n",
|
||||
client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_IDENTIFIER_REJECTED)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(
|
||||
" ClientID : %s ClientID is collect UTF-8 but not allowed by the Server.\n",
|
||||
client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_SERVER_UNAVAILABLE)
|
||||
{
|
||||
rc = MQTTSN_RC_REJECTED_CONGESTED;
|
||||
WRITELOG(
|
||||
" ClientID : %s The Network Connection has been made but the MQTT service is unavailable.\n",
|
||||
client->getClientId());
|
||||
}
|
||||
else if (resp.rc == MQTT_BAD_USERNAME_OR_PASSWORD)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(
|
||||
" Gateway Configuration Error: The data in the user name or password is malformed.\n");
|
||||
}
|
||||
else if (resp.rc == MQTT_NOT_AUTHORIZED)
|
||||
{
|
||||
rc = MQTTSN_RC_NOT_SUPPORTED;
|
||||
WRITELOG(
|
||||
" Gateway Configuration Error: The Client is not authorized to connect.\n");
|
||||
}
|
||||
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setCONNACK(rc);
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setCONNACK(rc);
|
||||
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
client->connackSended(rc); // update the client's status
|
||||
_gateway->getClientSendQue()->post(ev1);
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
client->connackSended(rc); // update the client's status
|
||||
_gateway->getClientSendQue()->post(ev1);
|
||||
}
|
||||
|
||||
void MQTTGWConnectionHandler::handlePingresp(Client* client, MQTTGWPacket* packet)
|
||||
void MQTTGWConnectionHandler::handlePingresp(Client* client,
|
||||
MQTTGWPacket* packet)
|
||||
{
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setPINGRESP();
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
client->updateStatus(snPacket);
|
||||
_gateway->getClientSendQue()->post(ev1);
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setPINGRESP();
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
client->updateStatus(snPacket);
|
||||
_gateway->getClientSendQue()->post(ev1);
|
||||
}
|
||||
|
||||
void MQTTGWConnectionHandler::handleDisconnect(Client* client, MQTTGWPacket* packet)
|
||||
void MQTTGWConnectionHandler::handleDisconnect(Client* client,
|
||||
MQTTGWPacket* packet)
|
||||
{
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setDISCONNECT(0);
|
||||
client->disconnected();
|
||||
client->getNetwork()->close();
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
MQTTSNPacket* snPacket = new MQTTSNPacket();
|
||||
snPacket->setDISCONNECT(0);
|
||||
client->disconnected();
|
||||
client->getNetwork()->close();
|
||||
Event* ev1 = new Event();
|
||||
ev1->setClientSendEvent(client, snPacket);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user