Guard against non-callable, non-facet on_add results
This commit is contained in:
parent
2b06fc2758
commit
29fe7d1d97
12
chat.py
12
chat.py
|
@ -51,10 +51,14 @@ def main_facet(turn, root_facet, ds):
|
|||
|
||||
def main(turn):
|
||||
root_facet = turn._facet
|
||||
gk_receiver = During(turn, on_add = lambda turn, gk: turn.publish(
|
||||
gk.embeddedValue, gatekeeper.Resolve(cap, ds_receiver))).ref
|
||||
ds_receiver = During(turn, on_add = lambda turn, ds: turn.facet(
|
||||
lambda turn: main_facet(turn, root_facet, ds.embeddedValue))).ref
|
||||
|
||||
def handle_gatekeeper(turn, gk):
|
||||
turn.publish(gk.embeddedValue, gatekeeper.Resolve(cap, ds_receiver))
|
||||
gk_receiver = During(turn, on_add = handle_gatekeeper).ref
|
||||
|
||||
def handle_ds(turn, ds):
|
||||
return turn.facet(lambda turn: main_facet(turn, root_facet, ds.embeddedValue))
|
||||
ds_receiver = During(turn, on_add = handle_ds).ref
|
||||
|
||||
disarm = turn.prevent_inert_check()
|
||||
async def on_connected(tr):
|
||||
|
|
|
@ -29,8 +29,13 @@ class During(actor.Entity):
|
|||
if retract_handler is not None:
|
||||
if isinstance(retract_handler, actor.Facet):
|
||||
self.retract_handlers[handle] = lambda turn: turn.stop(retract_handler)
|
||||
else:
|
||||
elif callable(retract_handler):
|
||||
self.retract_handlers[handle] = retract_handler
|
||||
else:
|
||||
raise ValueError('Non-callable retract_handler', {
|
||||
'retract_handler': retract_handler,
|
||||
'on_add': self._on_add,
|
||||
})
|
||||
|
||||
def on_retract(self, turn, handle):
|
||||
self.retract_handlers.pop(handle, lambda turn: ())(turn)
|
||||
|
|
Loading…
Reference in New Issue