mirror of
https://github.com/urbit/shrub.git
synced 2024-12-20 01:01:37 +03:00
ames: prevent larval stage from possibly clobbering adult state
This commit is contained in:
parent
5a96f3bdbe
commit
679b38138d
@ -854,6 +854,7 @@
|
|||||||
++ take ^take
|
++ take ^take
|
||||||
--
|
--
|
||||||
|%
|
|%
|
||||||
|
++ larval-core .
|
||||||
:: +call: handle request $task
|
:: +call: handle request $task
|
||||||
::
|
::
|
||||||
++ call
|
++ call
|
||||||
@ -866,7 +867,7 @@
|
|||||||
~|(%ames-larval-call-dud (mean tang.u.dud))
|
~|(%ames-larval-call-dud (mean tang.u.dud))
|
||||||
:: before processing events, make sure we have state loaded
|
:: before processing events, make sure we have state loaded
|
||||||
::
|
::
|
||||||
=^ molt-moves adult-gate molt
|
=^ molt-moves larval-core molt
|
||||||
::
|
::
|
||||||
?: &(!=(~ unix-duct.ames-state.adult-gate) =(~ queued-events))
|
?: &(!=(~ unix-duct.ames-state.adult-gate) =(~ queued-events))
|
||||||
=^ moves adult-gate (call:adult-core duct dud task)
|
=^ moves adult-gate (call:adult-core duct dud task)
|
||||||
@ -900,7 +901,7 @@
|
|||||||
?^ dud
|
?^ dud
|
||||||
~|(%ames-larval-take-dud (mean tang.u.dud))
|
~|(%ames-larval-take-dud (mean tang.u.dud))
|
||||||
::
|
::
|
||||||
=^ molt-moves adult-gate molt
|
=^ molt-moves larval-core molt
|
||||||
::
|
::
|
||||||
?: &(!=(~ unix-duct.ames-state.adult-gate) =(~ queued-events))
|
?: &(!=(~ unix-duct.ames-state.adult-gate) =(~ queued-events))
|
||||||
=^ moves adult-gate (take:adult-core wire duct dud sign)
|
=^ moves adult-gate (take:adult-core wire duct dud sign)
|
||||||
@ -908,17 +909,9 @@
|
|||||||
[(weld molt-moves moves) adult-gate]
|
[(weld molt-moves moves) adult-gate]
|
||||||
:: enqueue event if not a larval drainage timer
|
:: enqueue event if not a larval drainage timer
|
||||||
::
|
::
|
||||||
=? queued-events !=(/larva wire)
|
?. =(/larva wire)
|
||||||
(~(put to queued-events) %take wire duct sign)
|
=. queued-events (~(put to queued-events) %take wire duct sign)
|
||||||
:: start drainage timer if have regressed from adult ames
|
[~ larval-gate]
|
||||||
::
|
|
||||||
?: ?& !=(/larva wire)
|
|
||||||
?=(^ cached-state)
|
|
||||||
==
|
|
||||||
[[duct %pass /larva %b %wait now]~ larval-gate]
|
|
||||||
:: XX what to do with errors?
|
|
||||||
::
|
|
||||||
?. =(/larva wire) [~ larval-gate]
|
|
||||||
:: larval event drainage timer; pop and process a queued event
|
:: larval event drainage timer; pop and process a queued event
|
||||||
::
|
::
|
||||||
?. ?=([%behn %wake *] sign)
|
?. ?=([%behn %wake *] sign)
|
||||||
@ -1058,8 +1051,8 @@
|
|||||||
:: +molt: re-evolve to adult-ames
|
:: +molt: re-evolve to adult-ames
|
||||||
::
|
::
|
||||||
++ molt
|
++ molt
|
||||||
^- (quip move _adult-gate)
|
^- (quip move _larval-core)
|
||||||
?~ cached-state [~ adult-gate]
|
?~ cached-state [~ larval-core]
|
||||||
~> %slog.0^leaf/"ames: molt"
|
~> %slog.0^leaf/"ames: molt"
|
||||||
=? u.cached-state ?=(%5 -.u.cached-state)
|
=? u.cached-state ?=(%5 -.u.cached-state)
|
||||||
6+(state-5-to-6:load:adult-core +.u.cached-state)
|
6+(state-5-to-6:load:adult-core +.u.cached-state)
|
||||||
@ -1072,7 +1065,7 @@
|
|||||||
8+(state-7-to-8:load:adult-core +.u.cached-state)
|
8+(state-7-to-8:load:adult-core +.u.cached-state)
|
||||||
?> ?=(%8 -.u.cached-state)
|
?> ?=(%8 -.u.cached-state)
|
||||||
=. ames-state.adult-gate +.u.cached-state
|
=. ames-state.adult-gate +.u.cached-state
|
||||||
[moz adult-gate]
|
[moz larval-core(cached-state ~)]
|
||||||
--
|
--
|
||||||
:: adult ames, after metamorphosis from larva
|
:: adult ames, after metamorphosis from larva
|
||||||
::
|
::
|
||||||
|
Loading…
Reference in New Issue
Block a user