示例#1
0
 def _trampoline(self,
                 fd,
                 read=False,
                 write=False,
                 timeout=None,
                 timeout_exc=None):
     """ We need to trampoline via the event hub.
         We catch any signal back from the hub indicating that the operation we
         were waiting on was associated with a filehandle that's since been
         invalidated.
     """
     if self._closed:
         # If we did any logging, alerting to a second trampoline attempt on a closed
         # socket here would be useful.
         raise IOClosed()
     try:
         return trampoline(fd,
                           read=read,
                           write=write,
                           timeout=timeout,
                           timeout_exc=timeout_exc,
                           mark_as_closed=self._mark_as_closed)
     except IOClosed:
         # This socket's been obsoleted. De-fang it.
         self._mark_as_closed()
         raise
示例#2
0
 def close_one(self):
     """ Triggered from the apis run loop. If a listener's underlying FD was
         closed somehow, throw an exception back to the trampoline, which should
         be able to manage it appropriately.
     """
     listener = self.closed.pop()
     if not listener.greenlet.dead:
         # There's no point signalling a greenlet that's already dead.
         listener.tb(IOClosed(errno.ENOTCONN, "Operation on closed file"))
示例#3
0
 def _trampoline(self, fd, read=False, write=False, timeout=None, timeout_exc=None):
     if self._closed:
         # Don't trampoline if we're already closed.
         raise IOClosed()
     try:
         return trampoline(fd, read=read, write=write, timeout=timeout,
                           timeout_exc=timeout_exc,
                           mark_as_closed=self._mark_as_closed)
     except IOClosed:
         # Our fileno has been obsoleted. Defang ourselves to
         # prevent spurious closes.
         self._mark_as_closed()
         raise
示例#4
0
 def _trampoline(self, **kw):
     """ We need to trampoline via the event hub.
         We catch any signal back from the hub indicating that the operation we
         were waiting on was associated with a filehandle that's since been
         invalidated.
     """
     # todo, listener == self
     if self._closed:
         # If we did any logging, alerting to a second trampoline attempt on a closed
         # socket here would be useful.
         raise IOClosed()
     try:
         kw['mark_as_closed'] = self._mark_as_closed
         return trampoline(self.fd, **kw)
     except IOClosed:
         # This socket's been obsoleted. De-fang it.
         self._mark_as_closed()
         raise