aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bb/event.py
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2008-04-06 20:01:20 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2008-04-06 20:01:20 +0000
commit7f00f95223bd2f7dfca94e8c0379a91f8096043e (patch)
treea42fe7adfde71dcc4a3ba666b98d8177695517b3 /lib/bb/event.py
parent1fa41048d64006c143c6acfe1562b0946750a25e (diff)
downloadbitbake-7f00f95223bd2f7dfca94e8c0379a91f8096043e.tar.gz
event.py: Clean up the event handling code and some legacy funtions
Diffstat (limited to 'lib/bb/event.py')
-rw-r--r--lib/bb/event.py82
1 files changed, 22 insertions, 60 deletions
diff --git a/lib/bb/event.py b/lib/bb/event.py
index 2eed2685a..c13a0127a 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -47,24 +47,23 @@ Registered = 10
AlreadyRegistered = 14
# Internal
-_handlers = []
-_handlers_dict = {}
+_handlers = {}
_ui_handlers = {}
_ui_handler_seq = 0
-def tmpHandler(event):
- """Default handler for code events"""
- return NotHandled
-
-def defaultTmpHandler():
- tmp = "def tmpHandler(e):\n\t\"\"\"heh\"\"\"\n\treturn NotHandled"
- comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event.defaultTmpHandler")
- return comp
-
def fire(event):
"""Fire off an Event"""
- databack = event.data
- databack1 = event._data
+
+ for handler in _handlers:
+ h = _handlers[handler]
+ if type(h).__name__ == "code":
+ exec(h)
+ tmpHandler(event)
+ else:
+ h(event)
+
+ # Remove the event data elements for UI handlers - too much data otherwise
+ # They can request data if they need it
event.data = None
event._data = None
@@ -79,36 +78,28 @@ def fire(event):
for h in errors:
del _ui_handlers[h]
- event.data = databack
- event._data = databack1
-
- for h in _handlers:
- if type(h).__name__ == "code":
- exec(h)
- if tmpHandler(event) == Handled:
- return Handled
- else:
- if h(event) == Handled:
- return Handled
- return NotHandled
-
def register(name, handler):
"""Register an Event handler"""
# already registered
- if name in _handlers_dict:
+ if name in _handlers:
return AlreadyRegistered
if handler is not None:
-# handle string containing python code
+ # handle string containing python code
if type(handler).__name__ == "str":
- _registerCode(handler)
+ tmp = "def tmpHandler(e):\n%s" % handler
+ comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode")
+ _handlers[name] = comp
else:
- _handlers.append(handler)
+ _handlers[name] = handler
- _handlers_dict[name] = 1
return Registered
+def remove(name, handler):
+ """Remove an Event handler"""
+ _handlers.pop(name)
+
def register_UIHhandler(handler):
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
@@ -119,35 +110,6 @@ def unregister_UIHhandler(handlerNum):
del _ui_handlers[handlerNum]
return
-def _registerCode(handlerStr):
- """Register a 'code' Event.
- Deprecated interface; call register instead.
-
- Expects to be passed python code as a string, which will
- be passed in turn to compile() and then exec(). Note that
- the code will be within a function, so should have had
- appropriate tabbing put in place."""
- tmp = "def tmpHandler(e):\n%s" % handlerStr
- comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode")
-# prevent duplicate registration
- _handlers.append(comp)
-
-def remove(name, handler):
- """Remove an Event handler"""
-
- _handlers_dict.pop(name)
- if type(handler).__name__ == "str":
- return _removeCode(handler)
- else:
- _handlers.remove(handler)
-
-def _removeCode(handlerStr):
- """Remove a 'code' Event handler
- Deprecated interface; call remove instead."""
- tmp = "def tmpHandler(e):\n%s" % handlerStr
- comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._removeCode")
- _handlers.remove(comp)
-
def getName(e):
"""Returns the name of a class or class instance"""
if getattr(e, "__name__", None) == None: