def readinto(self, b): if self.http_stream.parser.is_message_complete() or self.eof: if self.http_stream.parser.is_partial_body(): return self.http_stream.parser.recv_body_into(b) return 0 self._checkReadable() try: self._checkClosed() except AttributeError: pass while True: buf = bytearray(DEFAULT_BUFFER_SIZE) recved = self.http_stream.stream.readinto(buf) if recved is None: break del buf[recved:] nparsed = self.http_stream.parser.execute(bytes(buf), recved) if nparsed != recved: return None if self.http_stream.parser.is_partial_body() or recved == 0: break elif self.http_stream.parser.is_message_complete(): break if not self.http_stream.parser.is_partial_body(): self.eof = True b = bytes('') return len(b) return self.http_stream.parser.recv_body_into(b)
def next(self): if self.parser.is_message_complete(): raise StopIteration # fetch data b = bytearray(DEFAULT_BUFFER_SIZE) recved = self.stream.readinto(b) if recved is None: raise NoMoreData("no more data") del b[recved:] # parse data nparsed = self.parser.execute(bytes(b), recved) if nparsed != recved and not self.parser.is_message_complete(): raise ParserError("nparsed != recved") if recved == 0: raise StopIteration return bytes(b)
def next(self): if self.parser.is_message_complete(): raise StopIteration # fetch data b = bytearray(DEFAULT_BUFFER_SIZE) recved = self.stream.readinto(b) if recved is None: raise NoMoreData("no more data") del b[recved:] # parse data nparsed = self.parser.execute(bytes(b), recved) if nparsed != recved: raise ParserError("nparsed != recved") if recved == 0: raise StopIteration return bytes(b)