Switched to using constants for the very very tiny speed boost.
This commit is contained in:
@@ -150,9 +150,9 @@ def trampoline(fd, read=None, write=None, timeout=None, timeout_exc=TimeoutError
|
||||
t = hub.schedule_call_global(timeout, current.throw, timeout_exc)
|
||||
try:
|
||||
if read:
|
||||
listener = hub.add("read", fileno, cb)
|
||||
listener = hub.add(hub.READ, fileno, cb)
|
||||
if write:
|
||||
listener = hub.add("write", fileno, cb)
|
||||
listener = hub.add(hub.WRITE, fileno, cb)
|
||||
try:
|
||||
return hub.switch()
|
||||
finally:
|
||||
@@ -206,9 +206,9 @@ def select(read_list, write_list, error_list, timeout=None):
|
||||
try:
|
||||
for k, v in ds.iteritems():
|
||||
if v.get('read'):
|
||||
hub.add('read', k, on_read)
|
||||
hub.add(hub.READ, k, on_read)
|
||||
if v.get('write'):
|
||||
hub.add_writer('write', k, on_write)
|
||||
hub.add(hub.WRITE, k, on_write)
|
||||
descriptors.append(k)
|
||||
try:
|
||||
return hub.switch()
|
||||
|
@@ -25,9 +25,12 @@ import time
|
||||
from eventlet.support import greenlets as greenlet
|
||||
from eventlet.timer import Timer, LocalTimer
|
||||
|
||||
READ="read"
|
||||
WRITE="write"
|
||||
|
||||
class FdListener(object):
|
||||
def __init__(self, evtype, fileno, cb):
|
||||
assert (evtype == 'read' or evtype == 'write')
|
||||
assert (evtype is READ or evtype is WRITE)
|
||||
self.evtype = evtype
|
||||
self.fileno = fileno
|
||||
self.cb = cb
|
||||
@@ -54,9 +57,12 @@ class BaseHub(object):
|
||||
specific to a particular underlying event architecture. """
|
||||
|
||||
SYSTEM_EXCEPTIONS = (KeyboardInterrupt, SystemExit)
|
||||
|
||||
READ = READ
|
||||
WRITE = WRITE
|
||||
|
||||
def __init__(self, clock=time.time):
|
||||
self.listeners = {'read':{}, 'write':{}}
|
||||
self.listeners = {READ:{}, WRITE:{}}
|
||||
self.closed_fds = []
|
||||
|
||||
self.clock = clock
|
||||
@@ -78,7 +84,7 @@ class BaseHub(object):
|
||||
def add(self, evtype, fileno, cb):
|
||||
""" Signals an intent to or write a particular file descriptor.
|
||||
|
||||
The *evtype* argument is either the string 'read' or the string 'write'.
|
||||
The *evtype* argument is either the constant READ or WRITE.
|
||||
|
||||
The *fileno* argument is the file number of the file of interest.
|
||||
|
||||
@@ -106,8 +112,8 @@ class BaseHub(object):
|
||||
|
||||
def remove_descriptor(self, fileno):
|
||||
""" Completely remove all listeners for this fileno."""
|
||||
self.listeners['read'].pop(fileno, None)
|
||||
self.listeners['write'].pop(fileno, None)
|
||||
self.listeners[READ].pop(fileno, None)
|
||||
self.listeners[WRITE].pop(fileno, None)
|
||||
|
||||
def stop(self):
|
||||
self.abort()
|
||||
@@ -304,10 +310,10 @@ class BaseHub(object):
|
||||
# for debugging:
|
||||
|
||||
def get_readers(self):
|
||||
return self.listeners['read']
|
||||
return self.listeners[READ]
|
||||
|
||||
def get_writers(self):
|
||||
return self.listeners['write']
|
||||
return self.listeners[WRITE]
|
||||
|
||||
def get_timers_count(hub):
|
||||
return max(len(x) for x in [hub.timers, hub.next_timers])
|
||||
|
@@ -24,7 +24,7 @@ import traceback
|
||||
import event
|
||||
|
||||
from eventlet import api
|
||||
from eventlet.hubs.hub import BaseHub, FdListener
|
||||
from eventlet.hubs.hub import BaseHub, FdListener, READ, WRITE
|
||||
|
||||
|
||||
class event_wrapper(object):
|
||||
@@ -129,9 +129,9 @@ class Hub(BaseHub):
|
||||
running = property(_getrunning, _setrunning)
|
||||
|
||||
def add(self, evtype, fileno, cb):
|
||||
if evtype == 'read':
|
||||
if evtype is READ:
|
||||
evt = event.read(fileno, cb, fileno)
|
||||
elif evtype == 'write':
|
||||
elif evtype is WRITE:
|
||||
evt = event.write(fileno, cb, fileno)
|
||||
|
||||
listener = FdListener(evtype, fileno, evt)
|
||||
@@ -179,12 +179,6 @@ class Hub(BaseHub):
|
||||
self.events_to_add.append(wrapper)
|
||||
return wrapper
|
||||
|
||||
def get_readers(self):
|
||||
return self.listeners['read']
|
||||
|
||||
def get_writers(self):
|
||||
return self.listeners['write']
|
||||
|
||||
def _version_info(self):
|
||||
baseversion = event.__version__
|
||||
return baseversion
|
||||
|
@@ -26,13 +26,13 @@ import errno
|
||||
from time import sleep
|
||||
import time
|
||||
|
||||
from eventlet.hubs import hub
|
||||
from eventlet.hubs.hub import BaseHub, READ, WRITE
|
||||
|
||||
EXC_MASK = select.POLLERR | select.POLLHUP
|
||||
READ_MASK = select.POLLIN
|
||||
WRITE_MASK = select.POLLOUT
|
||||
|
||||
class Hub(hub.BaseHub):
|
||||
class Hub(BaseHub):
|
||||
def __init__(self, clock=time.time):
|
||||
super(Hub, self).__init__(clock)
|
||||
self.poll = select.poll()
|
||||
@@ -52,9 +52,9 @@ class Hub(hub.BaseHub):
|
||||
|
||||
def register(self, fileno):
|
||||
mask = 0
|
||||
if self.listeners['read'].get(fileno):
|
||||
if self.listeners[READ].get(fileno):
|
||||
mask |= READ_MASK
|
||||
if self.listeners['write'].get(fileno):
|
||||
if self.listeners[WRITE].get(fileno):
|
||||
mask |= WRITE_MASK
|
||||
if mask:
|
||||
self.poll.register(fileno, mask)
|
||||
@@ -72,8 +72,8 @@ class Hub(hub.BaseHub):
|
||||
pass
|
||||
|
||||
def wait(self, seconds=None):
|
||||
readers = self.listeners['read']
|
||||
writers = self.listeners['write']
|
||||
readers = self.listeners[READ]
|
||||
writers = self.listeners[WRITE]
|
||||
|
||||
if not readers and not writers:
|
||||
if seconds:
|
||||
|
@@ -23,9 +23,9 @@ import select
|
||||
import errno
|
||||
import time
|
||||
|
||||
from eventlet.hubs import hub
|
||||
from eventlet.hubs.hub import BaseHub, READ, WRITE
|
||||
|
||||
class Hub(hub.BaseHub):
|
||||
class Hub(BaseHub):
|
||||
def _remove_closed_fds(self):
|
||||
""" Iterate through fds that have had their socket objects recently closed,
|
||||
removing the ones that are actually closed per the operating system.
|
||||
@@ -38,8 +38,8 @@ class Hub(hub.BaseHub):
|
||||
self.remove_descriptor(fd)
|
||||
|
||||
def wait(self, seconds=None):
|
||||
readers = self.listeners['read']
|
||||
writers = self.listeners['write']
|
||||
readers = self.listeners[READ]
|
||||
writers = self.listeners[WRITE]
|
||||
if not readers and not writers:
|
||||
if seconds:
|
||||
time.sleep(seconds)
|
||||
|
@@ -23,7 +23,7 @@ import sys
|
||||
import threading
|
||||
from twisted.internet.base import DelayedCall as TwistedDelayedCall
|
||||
from eventlet import api
|
||||
from eventlet.hubs import hub
|
||||
from eventlet.hubs.hub import FdListener, READ, WRITE
|
||||
|
||||
|
||||
class DelayedCall(TwistedDelayedCall):
|
||||
@@ -74,11 +74,11 @@ class socket_rwdescriptor(hub.FdListener):
|
||||
disconnected = False
|
||||
|
||||
def doRead(self):
|
||||
if self.evtype == 'read':
|
||||
if self.evtype is READ:
|
||||
self.cb(self)
|
||||
|
||||
def doWrite(self):
|
||||
if self.evtype == 'write':
|
||||
if self.evtype == WRITE:
|
||||
self.cb(self)
|
||||
|
||||
def connectionLost(self, reason):
|
||||
@@ -130,9 +130,9 @@ class BaseTwistedHub(object):
|
||||
def add(self, evtype, fileno, cb):
|
||||
from twisted.internet import reactor
|
||||
descriptor = socket_rwdescriptor(evtype, fileno, cb)
|
||||
if evtype == 'read':
|
||||
if evtype is READ:
|
||||
reactor.addReader(descriptor)
|
||||
if evtype == 'write':
|
||||
if evtype is WRITE:
|
||||
reactor.addWriter(descriptor)
|
||||
return descriptor
|
||||
|
||||
|
Reference in New Issue
Block a user