def _buffered_read(self, length):
# try to recv and strore needed bytes
wanted_bytes = length - (len(self._readbuffer) - self._readbuffer_head)
if wanted_bytes > 0:
data = self._socket.recv(wanted_bytes)
if not data:
raise socket.error(errno.ECONNABORTED, 0)
else:
self._readbuffer.extend(data)
if len(data) < wanted_bytes:
raise socket.error(errno.EAGAIN, 0)
self._readbuffer_head += length
return self._readbuffer[self._readbuffer_head - length:self._readbuffer_head]
评论列表
文章目录