shrub/pkg/arvo/sys/vane/lick.hoon

131 lines
2.7 KiB
Plaintext
Raw Normal View History

2023-04-12 17:50:29 +03:00
:: %lick
!:
!? 164
::
=, lick
|= our=ship
=> |%
+$ move [p=duct q=(wite note gift)]
+$ note ~ :: out request $->
::$% $: %g :: to %gall
::$>(%deal task:gall) :: full transmission
::== ::
::== ::
::
+$ sign ~
::$% [%lick $>(%red gift)] :: read
:: [%lick $>(%read gift)]
::==
::
+$ lick-state
$: %0
unix-duct=duct
agents=(list agent)
==
::
+$ agent [name=@tas ver=@tas]
--
::
=>
~% %lick ..part ~
|%
++ per-event
=| moves=(list move)
|= [[now=@da =duct] state=lick-state]
::
|%
++ this .
:: %entry-points
::
:: +crud: handle failure of previous arvo event
::
++ crud [moves state]
:: +read: give back
::
++ read [moves state]
:: +trim: in response to memory pressue
::
++ trim [moves state]
:: +vega: learn of a kernel upgrade
::
++ vega [moves state]
:: %utilities
::
::+|
::
++ event-core .
--
--
::
=| lick-state
=* state -
|= [now=@da eny=@uvJ rof=roof]
=* lick-gate .
^?
|%
:: +register: Create a move to register an agent with vere
::
++ register
|= =agent
^- move
[unix-duct.state %give [%book name.agent ver.agent]]
:: +call: handle a +task:lick request
::
++ call
|= $: hen=duct
dud=(unit goof)
wrapped-task=(hobo task)
==
^- [(list move) _lick-gate]
::
=/ =task ((harden task) wrapped-task)
?+ -.task [~ lick-gate]
%born :: When born you need to register all devices
:- (turn agents.state register)
lick-gate(unix-duct hen)
::
%book :: A gall agent wants to book a communication line
=/ =agent [nam.task ver.task]
:- ~[(register agent)]
lick-gate(agents (snoc agents agent))
==
:: +load: migrate an old state to a new lick version
::
++ load
|= old=lick-state
^+ lick-gate
~& >> "lick load:"
lick-gate(state old)
:: +scry: view state
::
:: %a scry out a list of devices
:: %d get a device's dat and tus
++ scry
^- roon
|= [lyc=gang car=term bem=beam]
^- (unit (unit cage))
=* ren car
=* why=shop &/p.bem
=* syd q.bem
=* lot=coin $/r.bem
=* tyl s.bem
~& >> "lick scry:"
~& >> ["lyc" lyc]
~& >> ["car" car]
~& >> ["bem" bem]
~
::
++ stay
~& >> "lick stay:"
state
++ take
|= [tea=wire hen=duct dud=(unit goof) hin=sign]
^- [(list move) _lick-gate]
?^ dud
~|(%lick-take-dud (mean tang.u.dud))
::
~& >> "lick take:"
[~ lick-gate]
--