Merge
This commit is contained in:
@@ -31,4 +31,6 @@ class Hub(poll.Hub):
|
|||||||
if not oldlisteners:
|
if not oldlisteners:
|
||||||
# Means we've added a new listener
|
# Means we've added a new listener
|
||||||
self.register(fileno, new=True)
|
self.register(fileno, new=True)
|
||||||
|
else:
|
||||||
|
self.register(fileno, new=False)
|
||||||
return listener
|
return listener
|
||||||
|
@@ -23,11 +23,8 @@ class Hub(BaseHub):
|
|||||||
self.modify = self.poll.register
|
self.modify = self.poll.register
|
||||||
|
|
||||||
def add(self, evtype, fileno, cb):
|
def add(self, evtype, fileno, cb):
|
||||||
oldlisteners = bool(self.listeners[evtype].get(fileno))
|
|
||||||
listener = super(Hub, self).add(evtype, fileno, cb)
|
listener = super(Hub, self).add(evtype, fileno, cb)
|
||||||
if not oldlisteners:
|
self.register(fileno, new=True)
|
||||||
# Means we've added a new listener
|
|
||||||
self.register(fileno, new=True)
|
|
||||||
return listener
|
return listener
|
||||||
|
|
||||||
def remove(self, listener):
|
def remove(self, listener):
|
||||||
@@ -37,14 +34,17 @@ class Hub(BaseHub):
|
|||||||
def register(self, fileno, new=False):
|
def register(self, fileno, new=False):
|
||||||
mask = 0
|
mask = 0
|
||||||
if self.listeners[READ].get(fileno):
|
if self.listeners[READ].get(fileno):
|
||||||
mask |= READ_MASK
|
mask |= READ_MASK | EXC_MASK
|
||||||
if self.listeners[WRITE].get(fileno):
|
if self.listeners[WRITE].get(fileno):
|
||||||
mask |= WRITE_MASK
|
mask |= WRITE_MASK | EXC_MASK
|
||||||
if mask:
|
if mask:
|
||||||
if new:
|
if new:
|
||||||
self.poll.register(fileno, mask)
|
self.poll.register(fileno, mask)
|
||||||
else:
|
else:
|
||||||
self.modify(fileno, mask)
|
try:
|
||||||
|
self.modify(fileno, mask)
|
||||||
|
except (IOError, OSError):
|
||||||
|
self.poll.register(fileno, mask)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
self.poll.unregister(fileno)
|
self.poll.unregister(fileno)
|
||||||
@@ -53,7 +53,7 @@ class Hub(BaseHub):
|
|||||||
except (IOError, OSError):
|
except (IOError, OSError):
|
||||||
# raised if we try to remove a fileno that was
|
# raised if we try to remove a fileno that was
|
||||||
# already removed/invalid
|
# already removed/invalid
|
||||||
self.squelch_generic_exception(sys.exc_info())
|
pass
|
||||||
|
|
||||||
def remove_descriptor(self, fileno):
|
def remove_descriptor(self, fileno):
|
||||||
super(Hub, self).remove_descriptor(fileno)
|
super(Hub, self).remove_descriptor(fileno)
|
||||||
@@ -62,7 +62,9 @@ class Hub(BaseHub):
|
|||||||
except (KeyError, ValueError):
|
except (KeyError, ValueError):
|
||||||
pass
|
pass
|
||||||
except (IOError, OSError):
|
except (IOError, OSError):
|
||||||
self.squelch_generic_exception(sys.exc_info())
|
# raised if we try to remove a fileno that was
|
||||||
|
# already removed/invalid
|
||||||
|
pass
|
||||||
|
|
||||||
def wait(self, seconds=None):
|
def wait(self, seconds=None):
|
||||||
readers = self.listeners[READ]
|
readers = self.listeners[READ]
|
||||||
|
Reference in New Issue
Block a user