[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r8451 - trunk/gnue-common/src/events
From: |
johannes |
Subject: |
[gnue] r8451 - trunk/gnue-common/src/events |
Date: |
Fri, 12 May 2006 04:35:56 -0500 (CDT) |
Author: johannes
Date: 2006-05-12 04:35:55 -0500 (Fri, 12 May 2006)
New Revision: 8451
Modified:
trunk/gnue-common/src/events/EventController.py
Log:
Optimized code for better performance
Modified: trunk/gnue-common/src/events/EventController.py
===================================================================
--- trunk/gnue-common/src/events/EventController.py 2006-04-27 20:02:44 UTC
(rev 8450)
+++ trunk/gnue-common/src/events/EventController.py 2006-05-12 09:35:55 UTC
(rev 8451)
@@ -47,6 +47,7 @@
def __init__ (self):
+ self.__caching = False
self.__incomingEvents = {}
@@ -87,6 +88,7 @@
called.
"""
+ self.__caching = True
self.__cache = []
@@ -100,6 +102,7 @@
Any previously cached events are dispatched.
"""
+ self.__caching = False
cache = self.__cache
del self.__cache
@@ -120,41 +123,33 @@
@returns: the event object's __result__ attribute
"""
- # If we are caching our events, cache it:
- try:
+ if self.__caching:
self.__cache.append ((event, args, parms))
return
- except AttributeError:
- pass
+ if not hasattr(event, '__event__'):
+ event = Event(event, *args, **parms)
- # Hackery so dispatchEvent can be passed either an Event() object, or a
- # text string identifying the type of event. If the latter, an event is
- # created on the fly.
- try:
- event.__event__
-
- except:
- event = Event (event, *args, **parms)
-
handlers = []
+ incoming = self.__incomingEvents
- if self.__incomingEvents.has_key (event.__event__):
- handlers = self.__incomingEvents [event.__event__]
+ if incoming.has_key('__before__'):
+ handlers.append(incoming['__before__'])
- if self.__incomingEvents.has_key ('__before__'):
- handlers = self.__incomingEvents ['__before__'] + handlers
+ if incoming.has_key(event.__event__):
+ handlers.append(incoming[event.__event__])
- if self.__incomingEvents.has_key ('__after__'):
- handlers = handlers + self.__incomingEvents ['__after__']
+ if incoming.has_key('__after__'):
+ handlers.append(incoming['__after__'])
- for handler in handlers:
- handler (event)
- if event.__error__ or event.__dropped__:
- break
+ if handlers:
+ for handler in handlers:
+ handler(event)
+ if event.__error__ or event.__dropped__:
+ break
- # Fire any "dispatchAfter" events
- for args, parms in event.__after__:
- self.dispatchEvent (*args, **parms)
+ if event.__after__:
+ for args, parms in event.__after__:
+ self.dispatchEvent(*args, **parms)
return event.__result__
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8451 - trunk/gnue-common/src/events,
johannes <=