From b3fec6220e948eafa5ebbe2d817af7eb6b0a7594 Mon Sep 17 00:00:00 2001 From: Joel Bender Date: Fri, 16 Sep 2016 11:26:16 -0400 Subject: [PATCH] trigger the task manager event when deferred is called to break the asyncore loop --- py27/bacpypes/core.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/py27/bacpypes/core.py b/py27/bacpypes/core.py index 26dadf7..00b4a16 100755 --- a/py27/bacpypes/core.py +++ b/py27/bacpypes/core.py @@ -79,7 +79,7 @@ def run(spin=SPIN): # call the functions for fn, args, kwargs in fnlist: - # if _debug: run._debug(" - call: %r %r %r", fn, args, kwargs) +# if _debug: run._debug(" - call: %r %r %r", fn, args, kwargs) fn( *args, **kwargs) # done with this list @@ -212,12 +212,20 @@ if hasattr(signal, 'SIGUSR1'): @bacpypes_debugging def deferred(fn, *args, **kwargs): - if _debug: deferred._debug("deferred %r %r %r", fn, args, kwargs) - global deferredFns +# if _debug: +# deferred._debug("deferred %r %r %r", fn, args, kwargs) +# for filename, lineno, _, _ in traceback.extract_stack()[-6:-1]: +# deferred._debug(" %s:%s" % (filename.split('/')[-1], lineno)) + global deferredFns, taskManager # append it to the list deferredFns.append((fn, args, kwargs)) + # trigger the task manager event + if taskManager and taskManager.trigger: +# if _debug: deferred._debug(" - trigger") + taskManager.trigger.set() + # # enable_sleeping #