Browse Source

Better priority merging

pull/84/head
Ruud 13 years ago
parent
commit
34611e1061
  1. 11
      couchpotato/core/event.py
  2. 12
      libs/axl/axel.py

11
couchpotato/core/event.py

@ -1,8 +1,7 @@
from axl.axel import Event
from couchpotato.core.helpers.variable import mergeDicts
from couchpotato.core.helpers.variable import mergeDicts, natcmp
from couchpotato.core.logger import CPLog
import threading
import time
import traceback
log = CPLog(__name__)
@ -36,7 +35,7 @@ def addEvent(name, handler, priority = 100):
return h
e.handle(handler, priority = priority)
e.handle(createHandle, priority = priority)
def removeEvent(name, handler):
e = events[name]
@ -84,7 +83,8 @@ def fireEvent(name, *args, **kwargs):
results = None
# Loop over results, stop when first not None result is found.
for r in result:
for r_key in sorted(result.iterkeys(), cmp = natcmp):
r = result[r_key]
if r[0] is True and r[1] is not None:
results = r[1]
break
@ -95,7 +95,8 @@ def fireEvent(name, *args, **kwargs):
else:
results = []
for r in result:
for r_key in sorted(result.iterkeys(), cmp = natcmp):
r = result[r_key]
if r[0] == True and r[1]:
results.append(r[1])
elif r[1]:

12
libs/axl/axel.py

@ -141,7 +141,7 @@ class Event(object):
def fire(self, *args, **kwargs):
""" Stores all registered handlers in a queue for processing """
self.queue = Queue.Queue()
self.result = []
self.result = {}
if self.handlers:
@ -158,12 +158,12 @@ class Event(object):
if self.asynchronous:
handler_, memoize, timeout = self.handlers[handler]
self.result.append((None, None, handler_))
self.result[handler] = (None, None, handler_)
if not self.asynchronous:
self.queue.join()
return tuple(self.result) or None
return self.result or None
def count(self):
""" Returns the count of registered handlers """
@ -187,12 +187,12 @@ class Event(object):
try:
r = self._memoize(memoize, timeout, handler, *args, **kwargs)
if not self.asynchronous:
self.result.append(tuple(r))
self.result[h_] = tuple(r)
except Exception:
if not self.asynchronous:
self.result.append((False, self._error(sys.exc_info()),
handler))
self.result[h_] = (False, self._error(sys.exc_info()),
handler)
else:
self.error_handler(sys.exc_info())
finally:

Loading…
Cancel
Save