Exemple #1
0
 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)
Exemple #3
0
 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_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)