[pypy-svn] pypy default: A little cleanup to epoll, consolidate the "is closed" logic and remove self.space, I don't like it.

alex_gaynor commits-noreply at bitbucket.org
Sat Feb 26 05:53:30 CET 2011


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: 
Changeset: r42306:902b78330a62
Date: 2011-02-25 23:53 -0500
http://bitbucket.org/pypy/pypy/changeset/902b78330a62/

Log:	A little cleanup to epoll, consolidate the "is closed" logic and
	remove self.space, I don't like it.

diff --git a/pypy/module/select/interp_epoll.py b/pypy/module/select/interp_epoll.py
--- a/pypy/module/select/interp_epoll.py
+++ b/pypy/module/select/interp_epoll.py
@@ -55,9 +55,9 @@
     compilation_info=eci,
 )
 
+
 class W_Epoll(Wrappable):
     def __init__(self, space, epfd):
-        self.space = space
         self.epfd = epfd
 
     @unwrap_spec(sizehint=int)
@@ -81,19 +81,22 @@
     def __del__(self):
         self.close()
 
-    def check_closed(self):
-        if self.epfd < 0:
-            raise OperationError(self.space.w_ValueError,
-                self.space.wrap("I/O operation on closed epoll fd")
+    def check_closed(self, space):
+        if self.get_closed():
+            raise OperationError(space.w_ValueError,
+                space.wrap("I/O operation on closed epoll fd")
             )
 
+    def get_closed(self):
+        return self.epfd < 0
+
     def close(self):
-        if not self.epfd < 0:
+        if not self.get_closed():
             socketclose(self.epfd)
             self.epfd = -1
 
-    def epoll_ctl(self, ctl, w_fd, eventmask, ignore_ebadf=False):
-        fd = self.space.c_filedescriptor_w(w_fd)
+    def epoll_ctl(self, space, ctl, w_fd, eventmask, ignore_ebadf=False):
+        fd = space.c_filedescriptor_w(w_fd)
         with lltype.scoped_alloc(epoll_event) as ev:
             ev.c_events = rffi.cast(rffi.UINT, eventmask)
             rffi.setintfield(ev.c_data, 'c_fd', fd)
@@ -102,36 +105,36 @@
             if ignore_ebadf and get_errno() == errno.EBADF:
                 result = 0
             if result < 0:
-                raise exception_from_errno(self.space, self.space.w_IOError)
+                raise exception_from_errno(space, space.w_IOError)
 
     def descr_get_closed(self, space):
-        return space.wrap(self.epfd < 0)
+        return space.wrap(self.get_closed())
 
     def descr_fileno(self, space):
-        self.check_closed()
+        self.check_closed(space)
         return space.wrap(self.epfd)
 
     def descr_close(self, space):
-        self.check_closed()
+        self.check_closed(space)
         self.close()
 
     @unwrap_spec(eventmask=int)
     def descr_register(self, space, w_fd, eventmask=-1):
-        self.check_closed()
-        self.epoll_ctl(EPOLL_CTL_ADD, w_fd, eventmask)
+        self.check_closed(space)
+        self.epoll_ctl(space, EPOLL_CTL_ADD, w_fd, eventmask)
 
     def descr_unregister(self, space, w_fd):
-        self.check_closed()
-        self.epoll_ctl(EPOLL_CTL_DEL, w_fd, 0, ignore_ebadf=True)
+        self.check_closed(space)
+        self.epoll_ctl(space, EPOLL_CTL_DEL, w_fd, 0, ignore_ebadf=True)
 
     @unwrap_spec(eventmask=int)
     def descr_modify(self, space, w_fd, eventmask=-1):
-        self.check_closed()
-        self.epoll_ctl(EPOLL_CTL_MOD, w_fd, eventmask)
+        self.check_closed(space)
+        self.epoll_ctl(space, EPOLL_CTL_MOD, w_fd, eventmask)
 
     @unwrap_spec(timeout=float, maxevents=int)
     def descr_poll(self, space, timeout=-1.0, maxevents=-1):
-        self.check_closed()
+        self.check_closed(space)
         if timeout < 0:
             timeout = -1.0
         else:


More information about the Pypy-commit mailing list