strandio: fix await-thread and thread-result

thread-result generated the tid twice and didn't take the kick caused by
the child thread closing. Additionally, await-thread and thread-result
expect a %thread-fail to produce [term (list tang)] rather than the
actual [term tang].

This commit adds a take-kick, removes the duplicate tid line, and fixes the
expected thread-fail type.
This commit is contained in:
tinnus-napbus 2021-03-11 00:24:30 +13:00
parent d17779972f
commit 210a63e238

View File

@ -719,7 +719,7 @@
(pure:m tid)
::
+$ thread-result
(each vase [term (list tang)])
(each vase [term tang])
::
++ await-thread
|= [file=term args=vase]
@ -727,14 +727,14 @@
^- form:m
;< =bowl:spider bind:m get-bowl
=/ tid (scot %ta (cat 3 'strand_' (scot %uv (sham file eny.bowl))))
=/ tid (scot %ta (cat 3 'strand_' (scot %uv (sham file eny.bowl))))
=/ poke-vase !>([`tid.bowl `tid file args])
;< ~ bind:m (watch-our /awaiting/[tid] %spider /thread-result/[tid])
;< ~ bind:m (poke-our %spider %spider-start poke-vase)
;< ~ bind:m (sleep ~s0) :: wait for thread to start
;< =cage bind:m (take-fact /awaiting/[tid])
;< ~ bind:m (take-kick /awaiting/[tid])
?+ p.cage ~|([%strange-thread-result p.cage file tid] !!)
%thread-done (pure:m %& q.cage)
%thread-fail (pure:m %| !<([term (list tang)] q.cage))
%thread-fail (pure:m %| !<([term tang] q.cage))
==
--