Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _doWriteOrRead(self, selectable, fd, event):
why = None
inRead = False
filter, flags, data, fflags = event.filter, event.flags, event.data, event.fflags
if flags & KQ_EV_EOF and data and fflags:
why = main.CONNECTION_LOST
else:
try:
if filter == KQ_FILTER_READ:
inRead = True
why = selectable.doRead()
if filter == KQ_FILTER_WRITE:
inRead = False
why = selectable.doWrite()
if not selectable.fileno() == fd:
inRead = False
why = main.CONNECTION_LOST
except:
log.err()
why = sys.exc_info()[1]
if why:
self._disconnectSelectable(selectable, why, inRead)
def removeReader(self, reader):
"""
Remove a Selectable for notification of data available to read.
"""
fd = reader.fileno()
if fd == -1:
for fd, fdes in self._selectables.iteritems():
if reader is fdes:
break
else:
return
if fd in self._reads:
self._reads.discard(fd)
if fd not in self._writes:
del self._selectables[fd]
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_DISABLE)
def removeAll(self):
"""
Remove all selectables, and return a list of them.
"""
if self.waker is not None:
self.removeReader(self.waker)
result = self._selectables.values()
for fd in self._reads:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_DELETE)
for fd in self._writes:
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_DELETE)
self._reads.clear()
self._writes.clear()
self._selectables.clear()
if self.waker is not None:
self.addReader(self.waker)
return result
def addReader(self, reader):
"""
Add a FileDescriptor for notification of data available to read.
"""
fd = reader.fileno()
if fd not in self._reads:
if fd not in self._selectables:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ADD|KQ_EV_ENABLE)
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_ADD|KQ_EV_DISABLE)
self._selectables[fd] = reader
else:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ENABLE)
self._reads.add(fd)
def removeAll(self):
"""
Remove all selectables, and return a list of them.
"""
if self.waker is not None:
self.removeReader(self.waker)
result = self._selectables.values()
for fd in self._reads:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_DELETE)
for fd in self._writes:
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_DELETE)
self._reads.clear()
self._writes.clear()
self._selectables.clear()
if self.waker is not None:
self.addReader(self.waker)
return result
def _doWriteOrRead(self, selectable, fd, event):
why = None
inRead = False
filter, flags, data, fflags = event.filter, event.flags, event.data, event.fflags
if flags & KQ_EV_EOF and data and fflags:
why = main.CONNECTION_LOST
else:
try:
if filter == KQ_FILTER_READ:
inRead = True
why = selectable.doRead()
if filter == KQ_FILTER_WRITE:
inRead = False
why = selectable.doWrite()
if not selectable.fileno() == fd:
inRead = False
why = main.CONNECTION_LOST
except:
log.err()
why = sys.exc_info()[1]
if why:
self._disconnectSelectable(selectable, why, inRead)
def addReader(self, reader):
"""
Add a FileDescriptor for notification of data available to read.
"""
fd = reader.fileno()
if fd not in self._reads:
if fd not in self._selectables:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ADD|KQ_EV_ENABLE)
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_ADD|KQ_EV_DISABLE)
self._selectables[fd] = reader
else:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ENABLE)
self._reads.add(fd)
def removeWriter(self, writer):
"""
Remove a Selectable for notification of data available to write.
"""
fd = writer.fileno()
if fd == -1:
for fd, fdes in self._selectables.iteritems():
if writer is fdes:
break
else:
return
if fd in self._writes:
self._writes.discard(fd)
if fd not in self._reads:
del self._selectables[fd]
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_DISABLE)
def addWriter(self, writer):
"""
Add a FileDescriptor for notification of data available to write.
"""
fd = writer.fileno()
if fd not in self._writes:
if fd not in self._selectables:
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_ADD|KQ_EV_ENABLE)
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ADD|KQ_EV_DISABLE)
self._selectables[fd] = writer
else:
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_ENABLE)
self._writes.add(fd)
def addReader(self, reader):
"""
Add a FileDescriptor for notification of data available to read.
"""
fd = reader.fileno()
if fd not in self._reads:
if fd not in self._selectables:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ADD|KQ_EV_ENABLE)
self._updateRegistration(fd, KQ_FILTER_WRITE, KQ_EV_ADD|KQ_EV_DISABLE)
self._selectables[fd] = reader
else:
self._updateRegistration(fd, KQ_FILTER_READ, KQ_EV_ENABLE)
self._reads.add(fd)