def _sync_recv_msg(self):
"""Internal use only; use 'recv_msg' instead.
Synchronous version of async_recv_msg.
"""
n = AsyncSocket._MsgLengthSize
try:
data = self._sync_recvall(n)
except socket.error as err:
if err.args[0] == 'hangup':
# raise socket.error(errno.EPIPE, 'Insufficient data')
return b''
else:
raise
if len(data) != n:
# raise socket.error(errno.EPIPE, 'Insufficient data: %s / %s' % (len(data), n))
return b''
n = struct.unpack('>L', data)[0]
# assert n >= 0
if n:
try:
data = self._sync_recvall(n)
except socket.error as err:
if err.args[0] == 'hangup':
# raise socket.error(errno.EPIPE, 'Insufficient data')
return b''
else:
raise
if len(data) != n:
# raise socket.error(errno.EPIPE, 'Insufficient data: %s / %s' % (len(data), n))
return b''
return data
else:
return b''
评论列表
文章目录