/*------------------------------------------------------- Upstream MQTTSnPubAck -------------------------------------------------------*/ void GatewayControlTask::handleSnPubAck(Event* ev, ClientNode* clnode, MQTTSnMessage* msg){ printf(GREEN_FORMAT1, currentDateTime(), "PUBACK", LEFTARROW, clnode->getNodeId()->c_str(), msgPrint(msg)); MQTTSnPubAck* sPubAck = new MQTTSnPubAck(); MQTTPubAck* pubAck = new MQTTPubAck(); sPubAck->absorb(msg); pubAck->setMessageId(sPubAck->getMsgId()); clnode->setBrokerSendMessage(pubAck); Event* ev1 = new Event(); ev1->setBrokerSendEvent(clnode); _res->getBrokerSendQue()->post(ev1); delete sPubAck; }
/*------------------------------------------------------- Downstream MQTTPubAck -------------------------------------------------------*/ void GatewayControlTask::handlePuback(Event* ev, ClientNode* clnode, MQTTMessage* msg){ MQTTPubAck* mqMsg = static_cast<MQTTPubAck*>(msg); MQTTSnPubAck* snMsg = clnode->getWaitedPubAck(); if(snMsg){ printf(BLUE_FORMAT1, currentDateTime(), "PUBACK", RIGHTARROW, clnode->getNodeId()->c_str(), msgPrint(snMsg)); if(snMsg->getMsgId() == mqMsg->getMessageId()){ clnode->setWaitedPubAck(0); clnode->setClientSendMessage(snMsg); Event* ev1 = new Event(); ev1->setClientSendEvent(clnode); _res->getClientSendQue()->post(ev1); } } }