def do_response(self): rbuff = self.client.recv(FSIZE) magic_code, resp_code, id, reverse, length = unpack(FMT, rbuff) self.client.logger.debug("return resp_code[%d] length[%d],id[%d]" % (resp_code, length, id)) if id != self.id: raise response_exception("id is error!") if length > 0: rbuff = self.client.recv(length) if 400 <= resp_code < 600: rpos = 0 error_code, = unpack('!L', rbuff[rpos:rpos + 4]) if resp_code == CLIENT_STATUS_DB_ERROR: raise response_exception("mysql return code [%d]" % error_code) if error_code < len(ERROR_MSG): raise response_exception(ERROR_MSG[error_code]) else: raise response_exception("unkown error code [%d]" % error_code) elif resp_code == CLIENT_STATUS_MULTI_STATUS: ret = [] for i in xrange(len(self.ids)): ret.append(self.do_single_reponse(i)) return ret else: raise response_exception("unknown response code [%d]" % resp_code)
def do_single_reponse(self,idx): databuff = "" data_len = 0 while True: rbuff = self.client.recv(FSIZE) magic_code, resp_code, id, reverse, length = unpack(FMT, rbuff) self.client.logger.debug("return resp_code[%d] length[%d],id[%d]" % (resp_code, length, id)) if id != self.ids[idx]: raise response_exception("id is error!") rbuff = self.client.recv(length) if 400 <= resp_code < 600: rpos = 0 error_code, = unpack('!L', rbuff[rpos:rpos + 4]) if resp_code == CLIENT_STATUS_DB_ERROR: raise response_exception("mysql return code [%d]" % error_code) if error_code < len(ERROR_MSG): raise response_exception(ERROR_MSG[error_code]) else: raise response_exception("unkown error code [%d]" % error_code) elif resp_code == CLIENT_STATUS_ACCEPT: databuff += rbuff data_len += length elif resp_code == CLIENT_STATUS_OK: databuff += rbuff data_len += length self.client.logger.debug("return data_length[%d]" % data_len) return response(databuff, data_len).parse() else: raise response_exception("unknown response code [%d]" % resp_code)
def do_single_reponse(self, idx): databuff = "" data_len = 0 while True: rbuff = self.client.recv(FSIZE) magic_code, resp_code, id, reverse, length = unpack(FMT, rbuff) self.client.logger.debug("return resp_code[%d] length[%d],id[%d]" % (resp_code, length, id)) if id != self.ids[idx]: raise response_exception("id is error!") rbuff = self.client.recv(length) if 400 <= resp_code < 600: rpos = 0 error_code, = unpack('!L', rbuff[rpos:rpos + 4]) if resp_code == CLIENT_STATUS_DB_ERROR: raise response_exception("mysql return code [%d]" % error_code) if error_code < len(ERROR_MSG): raise response_exception(ERROR_MSG[error_code]) else: raise response_exception("unkown error code [%d]" % error_code) elif resp_code == CLIENT_STATUS_ACCEPT: databuff += rbuff data_len += length elif resp_code == CLIENT_STATUS_OK: databuff += rbuff data_len += length self.client.logger.debug("return data_length[%d]" % data_len) return response(databuff, data_len).parse() else: raise response_exception("unknown response code [%d]" % resp_code)