From: Ben Darnell Date: Sun, 26 Jun 2011 18:56:18 +0000 (-0700) Subject: Move read_bytes(0) special-case into _consume so it uses more of the regular code... X-Git-Tag: v2.1.0~149 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7829333a22a1ee20e4ce84953d5dbc9ae83609b7;p=thirdparty%2Ftornado.git Move read_bytes(0) special-case into _consume so it uses more of the regular code path. --- diff --git a/tornado/iostream.py b/tornado/iostream.py index d4b59b703..cebd6f417 100644 --- a/tornado/iostream.py +++ b/tornado/iostream.py @@ -142,9 +142,6 @@ class IOStream(object): def read_bytes(self, num_bytes, callback): """Call callback when we read the given number of bytes.""" assert not self._read_callback, "Already reading" - if num_bytes == 0: - callback(b("")) - return self._read_bytes = num_bytes self._read_callback = stack_context.wrap(callback) while True: @@ -326,7 +323,7 @@ class IOStream(object): Returns True if the read was completed. """ - if self._read_bytes: + if self._read_bytes is not None: if self._read_buffer_size >= self._read_bytes: num_bytes = self._read_bytes callback = self._read_callback @@ -334,7 +331,7 @@ class IOStream(object): self._read_bytes = None self._run_callback(callback, self._consume(num_bytes)) return True - elif self._read_delimiter: + elif self._read_delimiter is not None: _merge_prefix(self._read_buffer, sys.maxint) loc = self._read_buffer[0].find(self._read_delimiter) if loc != -1: @@ -394,6 +391,8 @@ class IOStream(object): self._run_callback(callback) def _consume(self, loc): + if loc == 0: + return b("") _merge_prefix(self._read_buffer, loc) self._read_buffer_size -= loc return self._read_buffer.popleft()