self.read_chunk_size = read_chunk_size
self._read_buffer = collections.deque()
self._write_buffer = collections.deque()
+ self._read_buffer_size = 0
self._write_buffer_frozen = False
self._read_delimiter = None
self._read_bytes = None
if chunk is None:
return 0
self._read_buffer.append(chunk)
- if self._read_buffer_size() >= self.max_buffer_size:
+ self._read_buffer_size += len(chunk)
+ if self._read_buffer_size >= self.max_buffer_size:
logging.error("Reached maximum read buffer size")
self.close()
raise IOError("Reached maximum read buffer size")
Returns True if the read was completed.
"""
if self._read_bytes:
- if self._read_buffer_size() >= self._read_bytes:
+ if self._read_buffer_size >= self._read_bytes:
num_bytes = self._read_bytes
callback = self._read_callback
self._read_callback = None
def _consume(self, loc):
_merge_prefix(self._read_buffer, loc)
+ self._read_buffer_size -= loc
return self._read_buffer.popleft()
def _check_closed(self):
self._state = self._state | state
self.io_loop.update_handler(self.socket.fileno(), self._state)
- def _read_buffer_size(self):
- return sum(len(chunk) for chunk in self._read_buffer)
-
class SSLIOStream(IOStream):
"""A utility class to write to and read from a non-blocking socket.