Author: tack
Date: Sun Oct 16 19:15:11 2005
New Revision: 870
Modified:
trunk/base/src/notifier/callback.py
Log:
Added set_prevent_recursion() method to Callback base class, which prevents
a callback from recursing into itself.
Modified: trunk/base/src/notifier/callback.py
==============================================================================
--- trunk/base/src/notifier/callback.py (original)
+++ trunk/base/src/notifier/callback.py Sun Oct 16 19:15:11 2005
@@ -119,6 +119,8 @@
self._kwargs = kwargs
self._ignore_caller_args = False
self._user_args_first = False
+ self._prevent_recursion = False
+ self._entered = False
def set_ignore_caller_args(self, flag = True):
@@ -128,6 +130,8 @@
def set_user_args_first(self, flag = True):
self._user_args_first = flag
+ def set_prevent_recursion(self, flag = True):
+ self._prevent_recursion = flag
def _get_callback(self):
return self._callback
@@ -150,13 +154,19 @@
"""
Call the callback function.
"""
+ if self._entered and self._prevent_recursion:
+ return
+
cb = self._get_callback()
cb_args, cb_kwargs = self._merge_args(args, kwargs)
if not cb:
# Is it wise to fail so gracefully here?
return
- return cb(*cb_args, **cb_kwargs)
+ self._entered = True
+ result = cb(*cb_args, **cb_kwargs)
+ self._entered = False
+ return result
def __str__(self):
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog