20 lines
582 B
Python
20 lines
582 B
Python
class LoopingCallManager(object):
|
|
def __init__(self, calls=None):
|
|
self.calls = calls or {}
|
|
|
|
def register_looping_call(self, name, call):
|
|
assert name not in self.calls, '{} is already registered'.format(name)
|
|
self.calls[name] = call
|
|
|
|
def start(self, name, *args):
|
|
lcall = self.calls[name]
|
|
if not lcall.running:
|
|
lcall.start(*args)
|
|
|
|
def stop(self, name):
|
|
self.calls[name].stop()
|
|
|
|
def shutdown(self):
|
|
for lcall in self.calls.itervalues():
|
|
if lcall.running:
|
|
lcall.stop()
|