def read(self, size, timeout=None):
if timeout != None:
limit = time.time() + timeout
payload = ''
while len(payload) < size:
if timeout != None:
events = self.poll(select.POLLIN, max(0, limit - time.time()))
else:
events = self.poll(select.POLLIN, -1)
if not events:
raise ConnectionTimeout()
if events[0][1] & ERRMASK:
raise ConnectionReset()
tmp = os.read(self.r, size)
if not tmp:
raise ConnectionClosed()
payload += tmp
return tmp
评论列表
文章目录