From 95b6068670e0248feb5bf86593f840ae81a4c757 Mon Sep 17 00:00:00 2001 From: Mounir Lamouri Date: Sun, 16 Aug 2009 21:22:34 +0000 Subject: Use a clean listener system for portage.elog instead of _emerge_elog_listener svn path=/main/trunk/; revision=14071 --- pym/portage/elog/__init__.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'pym/portage/elog') diff --git a/pym/portage/elog/__init__.py b/pym/portage/elog/__init__.py index 1ebc027c5..7bd567cee 100644 --- a/pym/portage/elog/__init__.py +++ b/pym/portage/elog/__init__.py @@ -56,11 +56,23 @@ def _load_mod(name): _elog_mod_imports[name] = m return m -_emerge_elog_listener = None +_elog_listeners = [] +def add_listener(listener): + ''' + Listeners should accept four arguments: settings, key, logentries and logtext + ''' + _elog_listeners.append(listener) + +def remove_listener(listener): + ''' + Remove previously added listener + ''' + _elog_listeners.remove(listener) + _elog_atexit_handlers = [] _preserve_logentries = {} def elog_process(cpv, mysettings, phasefilter=None): - global _elog_atexit_handlers, _emerge_elog_listener, _preserve_logentries + global _elog_atexit_handlers, _preserve_logentries logsystems = mysettings.get("PORTAGE_ELOG_SYSTEM","").split() for s in logsystems: @@ -123,9 +135,9 @@ def elog_process(cpv, mysettings, phasefilter=None): default_fulllog = _combine_logentries(default_logentries) - if _emerge_elog_listener is not None: - _emerge_elog_listener(mysettings, str(key), - default_logentries, default_fulllog) + # call listeners + for listener in _elog_listeners: + listener(mysettings, str(key), default_logentries, default_fulllog) # pass the processing to the individual modules for s, levels in logsystems.iteritems(): -- cgit v1.2.3-1-g7c22