forked from M-Labs/artiq
sync_struct/Subscriber: support lists of notify callbacks
This commit is contained in:
parent
62c0eb85b1
commit
11fbea4161
|
@ -51,11 +51,16 @@ class Subscriber:
|
||||||
:param notify_cb: An optional function called every time a mod is received
|
:param notify_cb: An optional function called every time a mod is received
|
||||||
from the publisher. The mod is passed as parameter. The function is
|
from the publisher. The mod is passed as parameter. The function is
|
||||||
called after the mod has been processed.
|
called after the mod has been processed.
|
||||||
|
A list of functions may also be used, and they will be called in turn.
|
||||||
"""
|
"""
|
||||||
def __init__(self, notifier_name, target_builder, notify_cb=None):
|
def __init__(self, notifier_name, target_builder, notify_cb=None):
|
||||||
self.notifier_name = notifier_name
|
self.notifier_name = notifier_name
|
||||||
self.target_builder = target_builder
|
self.target_builder = target_builder
|
||||||
self.notify_cb = notify_cb
|
if notify_cb is None:
|
||||||
|
notify_cb = []
|
||||||
|
if not isinstance(notify_cb, list):
|
||||||
|
notify_cb = [notify_cb]
|
||||||
|
self.notify_cbs = notify_cb
|
||||||
|
|
||||||
async def connect(self, host, port, before_receive_cb=None):
|
async def connect(self, host, port, before_receive_cb=None):
|
||||||
self.reader, self.writer = \
|
self.reader, self.writer = \
|
||||||
|
@ -97,8 +102,8 @@ class Subscriber:
|
||||||
else:
|
else:
|
||||||
process_mod(target, mod)
|
process_mod(target, mod)
|
||||||
|
|
||||||
if self.notify_cb is not None:
|
for notify_cb in self.notify_cbs:
|
||||||
self.notify_cb(mod)
|
notify_cb(mod)
|
||||||
|
|
||||||
|
|
||||||
class Notifier:
|
class Notifier:
|
||||||
|
|
Loading…
Reference in New Issue