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