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):
|
def main(turn):
|
||||||
root_facet = turn._facet
|
root_facet = turn._facet
|
||||||
gk_receiver = During(turn, on_add = lambda turn, gk: turn.publish(
|
|
||||||
gk.embeddedValue, gatekeeper.Resolve(cap, ds_receiver))).ref
|
def handle_gatekeeper(turn, gk):
|
||||||
ds_receiver = During(turn, on_add = lambda turn, ds: turn.facet(
|
turn.publish(gk.embeddedValue, gatekeeper.Resolve(cap, ds_receiver))
|
||||||
lambda turn: main_facet(turn, root_facet, ds.embeddedValue))).ref
|
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()
|
disarm = turn.prevent_inert_check()
|
||||||
async def on_connected(tr):
|
async def on_connected(tr):
|
||||||
|
|
|
@ -29,8 +29,13 @@ class During(actor.Entity):
|
||||||
if retract_handler is not None:
|
if retract_handler is not None:
|
||||||
if isinstance(retract_handler, actor.Facet):
|
if isinstance(retract_handler, actor.Facet):
|
||||||
self.retract_handlers[handle] = lambda turn: turn.stop(retract_handler)
|
self.retract_handlers[handle] = lambda turn: turn.stop(retract_handler)
|
||||||
else:
|
elif callable(retract_handler):
|
||||||
self.retract_handlers[handle] = 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):
|
def on_retract(self, turn, handle):
|
||||||
self.retract_handlers.pop(handle, lambda turn: ())(turn)
|
self.retract_handlers.pop(handle, lambda turn: ())(turn)
|
||||||
|
|
Loading…
Reference in New Issue