From bb1c9a6518807ac131a3a7ce77453004e05262e4 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Mon, 19 Nov 2012 03:50:52 +0900 Subject: [PATCH] don't use select.POLL* constants 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 Signed-off-by: Ben Pfaff --- AUTHORS | 1 + python/ovs/poller.py | 33 +++++++++++++++++++-------------- python/ovs/socket_util.py | 2 +- python/ovs/stream.py | 7 +++---- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/AUTHORS b/AUTHORS index 46878657..18a0be66 100644 --- a/AUTHORS +++ b/AUTHORS @@ -26,6 +26,7 @@ Dominic Curran dominic.curran@citrix.com Ed Maste emaste at freebsd.org Edward Tomasz Napierała trasz@freebsd.org Ethan Jackson ethan@nicira.com +FUJITA Tomonori fujita.tomonori@lab.ntt.co.jp Gaetano Catalli gaetano.catalli@gmail.com Giuseppe Lettieri g.lettieri@iet.unipi.it Glen Gibb grg@stanford.edu diff --git a/python/ovs/poller.py b/python/ovs/poller.py index c04c9b36..7d15f3ed 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 dd45fe4b..1fc80fd3 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 dad68483..c4d243d0 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. -- 2.30.2