def read_request(self, fileno): """Store information about the data request for processing""" try: new_request = self.connections[fileno].recv( WesEntropyDaemon.READ_SIZE) request = self.requests[fileno]['partial_req'] + new_request except IOError as error: if error.errno == errno.EAGAIN or error.errno == errno.EWOULDBLOCK: logging.warning("No data for recv to get. (error: %s)", errno.errorcode[error.errno]) else: logging.error("Error on recv (error: %s)", errno.errorcode[error.errno]) logging.debug("Calling handle_error on %s.", fileno) self.handle_error(fileno) num_requests = len(request) / 8 logging.debug("Current num_requests: %i", num_requests) for index in range(num_requests): msg = DaemonMsg(request[8*index:8*index+8]) if msg.is_rand_request(): self.requests[fileno]['bytes_req'] += msg.get_num_bytes() elif msg.is_stats_request(): self.requests[fileno]['send_stats'] = True else: continue self.requests[fileno]['partial_req'] = request[num_requests*8:]