[ovs-dev] [PATCH] don't use select.POLL* constants

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Sun Nov 18 18:50:52 UTC 2012


Python doesn't have select.POLL* constants on some architectures
(e.g. MacOSX). This code needs to define the constants for itself. It
uses select.POLL* constants only internally (doesn't pass them
outside). So there is no harm even if the definition would conflict
with Python's those.

Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
---
 python/ovs/poller.py      |   33 +++++++++++++++++++--------------
 python/ovs/socket_util.py |    2 +-
 python/ovs/stream.py      |    7 +++----
 3 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/python/ovs/poller.py b/python/ovs/poller.py
index c04c9b3..7d15f3e 100644
--- a/python/ovs/poller.py
+++ b/python/ovs/poller.py
@@ -20,6 +20,11 @@ import socket
 
 vlog = ovs.vlog.Vlog("poller")
 
+POLLIN = 0x001
+POLLOUT = 0x004
+POLLERR = 0x008
+POLLHUP = 0x010
+POLLNVAL = 0x020
 
 # eventlet/gevent doesn't support select.poll. If select.poll is used,
 # python interpreter is blocked as a whole instead of switching from the
@@ -39,12 +44,12 @@ class _SelectSelect(object):
         if isinstance(fd, socket.socket):
             fd = fd.fileno()
         assert isinstance(fd, int)
-        if events & select.POLLIN:
+        if events & POLLIN:
             self.rlist.append(fd)
-            events &= ~select.POLLIN
-        if events & select.POLLOUT:
+            events &= ~POLLIN
+        if events & POLLOUT:
             self.wlist.append(fd)
-            events &= ~select.POLLOUT
+            events &= ~POLLOUT
         if events:
             self.xlist.append(fd)
 
@@ -63,13 +68,13 @@ class _SelectSelect(object):
         # events_dict[fd] |= event
         events_dict = {}
         for fd in rlist:
-            events_dict[fd] = events_dict.get(fd, 0) | select.POLLIN
+            events_dict[fd] = events_dict.get(fd, 0) | POLLIN
         for fd in wlist:
-            events_dict[fd] = events_dict.get(fd, 0) | select.POLLOUT
+            events_dict[fd] = events_dict.get(fd, 0) | POLLOUT
         for fd in xlist:
-            events_dict[fd] = events_dict.get(fd, 0) | (select.POLLERR |
-                                                        select.POLLHUP |
-                                                        select.POLLNVAL)
+            events_dict[fd] = events_dict.get(fd, 0) | (POLLERR |
+                                                        POLLHUP |
+                                                        POLLNVAL)
         return events_dict.items()
 
 
@@ -168,15 +173,15 @@ class Poller(object):
             for fd, revents in events:
                 if revents != 0:
                     s = ""
-                    if revents & select.POLLIN:
+                    if revents & POLLIN:
                         s += "[POLLIN]"
-                    if revents & select.POLLOUT:
+                    if revents & POLLOUT:
                         s += "[POLLOUT]"
-                    if revents & select.POLLERR:
+                    if revents & POLLERR:
                         s += "[POLLERR]"
-                    if revents & select.POLLHUP:
+                    if revents & POLLHUP:
                         s += "[POLLHUP]"
-                    if revents & select.POLLNVAL:
+                    if revents & POLLNVAL:
                         s += "[POLLNVAL]"
                     vlog.dbg("%s on fd %d" % (s, fd))
 
diff --git a/python/ovs/socket_util.py b/python/ovs/socket_util.py
index dd45fe4..1fc80fd 100644
--- a/python/ovs/socket_util.py
+++ b/python/ovs/socket_util.py
@@ -77,7 +77,7 @@ def make_unix_socket(style, nonblock, bind_path, connect_path):
 
 def check_connection_completion(sock):
     p = ovs.poller.SelectPoll()
-    p.register(sock, select.POLLOUT)
+    p.register(sock, ovs.poller.POLLOUT)
     if len(p.poll(0)) == 1:
         return get_socket_error(sock)
     else:
diff --git a/python/ovs/stream.py b/python/ovs/stream.py
index dad6848..c4d243d 100644
--- a/python/ovs/stream.py
+++ b/python/ovs/stream.py
@@ -14,7 +14,6 @@
 
 import errno
 import os
-import select
 import socket
 
 import ovs.poller
@@ -236,9 +235,9 @@ class Stream(object):
         if self.state == Stream.__S_CONNECTING:
             wait = Stream.W_CONNECT
         if wait == Stream.W_RECV:
-            poller.fd_wait(self.socket, select.POLLIN)
+            poller.fd_wait(self.socket, ovs.poller.POLLIN)
         else:
-            poller.fd_wait(self.socket, select.POLLOUT)
+            poller.fd_wait(self.socket, ovs.poller.POLLOUT)
 
     def connect_wait(self, poller):
         self.wait(poller, Stream.W_CONNECT)
@@ -324,7 +323,7 @@ class PassiveStream(object):
                 return error, None
 
     def wait(self, poller):
-        poller.fd_wait(self.socket, select.POLLIN)
+        poller.fd_wait(self.socket, ovs.poller.POLLIN)
 
     def __del__(self):
         # Don't delete the file: we might have forked.
-- 
1.7.4.4




More information about the dev mailing list