def can_write(self, timeout=0):
"""
Checks if there is data that can be written to the
socket (if open). Returns True if writing is possible and
False if not.
It returns None if something very bad happens such as
a dead connection (bad file descriptor), etc
"""
# rs = Read Sockets
# ws = Write Sockets
# es = Error Sockets
if self.socket is not None:
try:
_, ws, es = select([], [self.socket], [], timeout)
except (SelectError, socket.error), e:
if e[0] == errno.EBADF:
# Bad File Descriptor... hmm
self.close()
return None
if len(es) > 0:
# Bad File Descriptor
self.close()
return None
return len(ws) > 0
# no socket or no connection
return None
评论列表
文章目录