def resendPub(self, pub): logger.debug("resending %s", str(pub)) logger.info("[MQTT-4.4.0-2] dup flag must be set on in re-publish") if pub.fh.QoS == 0: respond(self.socket, pub, self.maximumPacketSize) elif pub.fh.QoS == 1: logger.info( "[MQTT-2.1.2-3] Dup when resending QoS 1 publish id %d", pub.packetIdentifier) logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend") logger.info("[MQTT-4.3.2-1] Resending QoS 1 with DUP flag") respond(self.socket, pub, self.maximumPacketSize) pub.fh.DUP = 1 elif pub.fh.QoS == 2: if pub.qos2state == "PUBREC": logger.info( "[MQTT-2.1.2-3] Dup when resending QoS 2 publish id %d", pub.packetIdentifier) logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend" ) logger.info("[MQTT-4.3.3-1] Resending QoS 2 with DUP flag") respond(self.socket, pub, self.maximumPacketSize) pub.fh.DUP = 1 else: resp = MQTTV5.Pubrels() logger.info( "[MQTT-2.3.1-4] Message id same as original publish on resend" ) resp.packetIdentifier = pub.packetIdentifier respond(self.socket, resp, self.maximumPacketSize)
def pubrec(self, sock, packet): "confirmed reception of qos 2" myclient = self.clients[sock] if myclient.pubrec(packet.packetIdentifier): logger.info("[MQTT-3.5.4-1] must reply with pubrel in response to pubrec") resp = MQTTV5.Pubrels() resp.packetIdentifier = packet.packetIdentifier respond(sock, resp)
def __init__(self, socket): logger.debug("initializing receiver") self.socket = socket self.stopping = False self.paused = False self.inMsgs = {} self.outMsgs = {} self.puback = MQTTV5.Pubacks() self.pubrec = MQTTV5.Pubrecs() self.pubrel = MQTTV5.Pubrels() self.pubcomp = MQTTV5.Pubcomps() self.running = False