예제 #1
0
 def register(self, fd, eventmask=EPOLLIN | EPOLLPRI | EPOLLOUT, retval=None):
     "retval is extension to stdlib, value to use in results from .poll()."
     if retval is None:
         retval = fd
     s = struct.pack(epoll_event, eventmask, retval)
     r = epoll_ctl(self.epfd, EPOLL_CTL_ADD, fd, s)
     if r == -1 and os.errno_() == errno.EEXIST:
         r = epoll_ctl(self.epfd, EPOLL_CTL_MOD, fd, s)
     os.check_error(r)
     # We must keep reference to retval, or it may be GCed. And we must
     # keep mapping from fd to retval to be able to get rid of this retval
     # reference later.
     self.registry[fd] = retval
예제 #2
0
 def register(self,
              fd,
              eventmask=EPOLLIN | EPOLLPRI | EPOLLOUT,
              retval=None):
     "retval is extension to stdlib, value to use in results from .poll()."
     if retval is None:
         retval = fd
     s = struct.pack(epoll_event, eventmask, retval)
     r = epoll_ctl(self.epfd, EPOLL_CTL_ADD, fd, s)
     if r == -1 and os.errno_() == errno.EEXIST:
         r = epoll_ctl(self.epfd, EPOLL_CTL_MOD, fd, s)
     os.check_error(r)
     # We must keep reference to retval, or it may be GCed. And we must
     # keep mapping from fd to retval to be able to get rid of this retval
     # reference later.
     self.registry[fd] = retval