def recv_data(self, response_type): log.debug('receiving data...') total_data = '' while True: data = None try: data = self.__socket.recv(SIZE) if not data: log.debug('no more data in socket') break log.debug('read chunk %d bytes' % len(data)) total_data += data if response_type: try: decoded_packet = packet.decode_answer(total_data, response_type) log.debug('whole data packet was received.') return decoded_packet except Exception, ex: continue except socket.error, err: #EAGAIN & EWOULDBLOCK if err.errno != 11: raise err elif total_data and not response_type: try: service_name, method_name, request_inst, response_class = packet.decode_request(total_data, get_pb2_module()) return service_name, method_name, request_inst, response_class except Exception, ex: continue
def recv_data(self, response_type): log.debug('receiving data...') total_data = '' while True: data = None try: data = self.__socket.recv(SIZE) if not data: log.debug('no more data in socket') break log.debug('read chunk %d bytes' % len(data)) total_data += data if response_type: try: decoded_packet = packet.decode_answer( total_data, response_type) log.debug('whole data packet was received.') return decoded_packet except Exception, ex: continue except socket.error, err: #EAGAIN & EWOULDBLOCK if err.errno != 11: raise err elif total_data and not response_type: try: service_name, method_name, request_inst, response_class = packet.decode_request( total_data, get_pb2_module()) return service_name, method_name, request_inst, response_class except Exception, ex: continue
def request_with_answer(self, request): self.send_data(request) data = self.recv_data() if not data or len(data) < 0: raise ProtoError('No data received as response') if packet.is_answer(data): #answer received, exiting while and return log.debug('Gochaa! (%s) : %s' % (len(data), data)) return packet.decode_answer(data, get_pb2_module()) else: log.debug('received some strange data while waiting for answer...')