Better priority merging
This commit is contained in:
@@ -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]:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user