syndicate-py/syndicate/dataspace.py

19 lines
568 B
Python
Raw Permalink Normal View History

2021-08-19 19:50:21 +00:00
from .schema import dataspace
from .during import During
from . import turn
2021-08-19 19:50:21 +00:00
# decorator
def observe(ds, pattern):
2021-08-19 19:50:21 +00:00
def publish_observer(entity):
turn.publish(ds, dataspace.Observe(pattern, turn.ref(entity)))
return entity
return publish_observer
# decorator
def on_message(ds, pattern, *args, **kwargs):
return lambda on_msg: observe(ds, pattern)(During(*args, **kwargs).msg_handler(on_msg))
# decorator
def during(ds, pattern, *args, **kwargs):
return lambda on_add: observe(ds, pattern)(During(*args, **kwargs).add_handler(on_add))