def dispatchInbandData(self, seq, data): if not seq in self.tcpCommandsWaitingForResponse: logdebug().error("Sequence {} data {} not matched".format(seq, data)) return origRequest = self.tcpCommandsWaitingForResponse[seq] del self.tcpCommandsWaitingForResponse[seq] if origRequest == Protocol.AUTH: self.parseAuthResponse(data) elif origRequest == Protocol.MOTD: self.parseMotdResponse(data) elif origRequest == Protocol.LIST_CHANNELS: self.parseListChannelsResponse(data) elif origRequest == Protocol.LIST_USERS: self.parseListUsersResponse(data) elif origRequest == Protocol.SPECTATE: status, data = Protocol.extractInt(data) if status != 0: self.sigStatusMessage.emit("Fail to spectate " + str(status)) elif origRequest in [Protocol.WELCOME, Protocol.JOIN_CHANNEL, Protocol.TOGGLE_AFK, Protocol.SEND_CHALLENGE, Protocol.CHAT, Protocol.ACCEPT_CHALLENGE, Protocol.DECLINE_CHALLENGE, Protocol.CANCEL_CHALLENGE]: if len(data) == 4: status, data = Protocol.extractInt(data) if status != 0: codestr = Protocol.codeToString(origRequest) logdebug().error("{} failed, data {}".format(codestr, repr(data))) self.sigActionFailed.emit(codestr) else: logdebug().error("Unknown response for {}; seq {}; data {}".format( Protocol.codeToString(origRequest), seq, repr(data))) else: logdebug().error("Not handling {} response; seq {}; data {}".format( Protocol.codeToString(origRequest), seq, repr(data)))
def dispatchInbandData(self, seq, data): if not seq in self.tcpCommandsWaitingForResponse: logdebug().error("Sequence {} data {} not matched".format( seq, data)) return origRequest = self.tcpCommandsWaitingForResponse[seq] del self.tcpCommandsWaitingForResponse[seq] if origRequest == Protocol.AUTH: self.parseAuthResponse(data) elif origRequest == Protocol.MOTD: self.parseMotdResponse(data) elif origRequest == Protocol.LIST_CHANNELS: self.parseListChannelsResponse(data) elif origRequest == Protocol.LIST_USERS: self.parseListUsersResponse(data) elif origRequest == Protocol.SPECTATE: status, data = Protocol.extractInt(data) if status != 0: self.sigStatusMessage.emit("Fail to spectate " + str(status)) elif origRequest in [ Protocol.WELCOME, Protocol.JOIN_CHANNEL, Protocol.TOGGLE_AFK, Protocol.SEND_CHALLENGE, Protocol.CHAT, Protocol.ACCEPT_CHALLENGE, Protocol.DECLINE_CHALLENGE, Protocol.CANCEL_CHALLENGE ]: if len(data) == 4: status, data = Protocol.extractInt(data) if status != 0: codestr = Protocol.codeToString(origRequest) logdebug().error("{} failed, data {}".format( codestr, repr(data))) if codestr == "SEND_CHALLENGE": self.sigActionFailed.emit("SEND_CHALLENGE failed") elif codestr == "CANCEL_CHALLENGE": pass else: self.sigActionFailed.emit(codestr) else: logdebug().error( "Unknown response for {}; seq {}; data {}".format( Protocol.codeToString(origRequest), seq, repr(data))) else: logdebug().error( "Not handling {} response; seq {}; data {}".format( Protocol.codeToString(origRequest), seq, repr(data)))
def sendAndRemember(self, command, data=''): logdebug().info('Sending {} seq {} {}'.format(Protocol.codeToString(command), self.sequence, repr(data))) self.tcpCommandsWaitingForResponse[self.sequence] = command self.sendtcp(struct.pack('!I', command) + data)
def sendAndForget(self, command, data=''): logdebug().info('Sending {} seq {} {}'.format(Protocol.codeToString(command), self.sequence, repr(data))) self.sendtcp(struct.pack('!I', command) + data)
def sendAndRemember(self, command, data=''): logdebug().info('Sending {} seq {} {}'.format( Protocol.codeToString(command), self.sequence, repr(data))) self.tcpCommandsWaitingForResponse[self.sequence] = command self.sendtcp(struct.pack('!I', command) + data)
def sendAndForget(self, command, data=''): logdebug().info('Sending {} seq {} {}'.format( Protocol.codeToString(command), self.sequence, repr(data))) self.sendtcp(struct.pack('!I', command) + data)
def sendAndRemember(self, command, data=''): with self.sendLock: # extensions may send messages from separate threads logdebug().info('Sending {} seq {} {}'.format(Protocol.codeToString(command), self.sequence, repr(data))) self.tcpCommandsWaitingForResponse[self.sequence] = command self.sendtcp(struct.pack('!I', command) + data)