def disconnect(self): if self.__receiver: self.__receiver.stopping = True count = 0 while (len(self.__receiver.inMsgs) > 0 or len(self.__receiver.outMsgs) > 0) and self.__receiver.paused == False: logger.debug("disconnecting %s %s", self.__receiver.inMsgs, self.__receiver.outMsgs) time.sleep(.2) count += 1 if count == 20: break if self.__receiver and self.__receiver.paused == False: assert self.__receiver.inMsgs == {}, self.__receiver.inMsgs assert self.__receiver.outMsgs == {}, self.__receiver.outMsgs disconnect = MQTTV3.Disconnects() sendtosocket(self.sock, disconnect.pack()) time.sleep(0.1) if self.cleansession: self.__receiver = None else: self.__receiver.socket = None self.sock.close() if self.__receiver: while self.__receiver.running: time.sleep(0.1) self.__receiver.stopping = False
def disconnect(sockid: "socket"): sock = state.sockets[sockid] disconnect = MQTTV3.Disconnects() sock.send(disconnect.pack()) checksocket(sockid)