New pump setup, etc.

This commit is contained in:
C. Guy Yarvin 2016-07-29 18:49:55 -07:00
parent 795fef3a52
commit 339feb8ba6

View File

@ -67,15 +67,15 @@
$: seq/tick :: next tick to fill $: seq/tick :: next tick to fill
lac/tick :: acked tick until lac/tick :: acked tick until
mis/(map tick (pair path coop)) :: nonsequential acks mis/(map tick (pair path coop)) :: nonsequential acks
myn/mini :: packet pump
cob/(map tick comb) :: live messages cob/(map tick comb) :: live messages
myn/mini :: packet pump
== :: == ::
++ comb :: live message ++ comb :: live message
$: cup/(unit coop) :: final ack $: cup/(unit coop) :: final ack
cha/path :: channel cha/path :: channel
num/frag :: number of fragments num/frag :: number of fragments
ack/frag :: number acked ack/frag :: number acked
pex/(list clue) :: left to send cly/(list clue) :: left to send
== :: == ::
++ corn :: flow by server ++ corn :: flow by server
$: hen/duct :: admin channel $: hen/duct :: admin channel
@ -282,7 +282,7 @@
|((lth q.a q.b) &(=(q.a q.b) (lth p.a p.b))) |((lth q.a q.b) &(=(q.a q.b) (lth p.a p.b)))
:: :: :: ::
++ abet :: resolve ++ abet :: resolve
^- (pair (list flex) mini) ^- {(list flex) mini}
=. . aver =. . aver
[(flop fex) +<+] [(flop fex) +<+]
:: :: :: ::
@ -373,6 +373,24 @@
[n.lop $(lop l.lop) r.lop] [n.lop $(lop l.lop) r.lop]
== ==
:: :: :: ::
++ cull :: clear message
|= tiq/tick
%_ +>
liv
|- ^+ liv
?~ liv ~
=+ vil=[n.liv $(liv l.liv) $(liv r.liv)]
?. =(tiq q.tel.clu.n.liv) vil
~(nip to `(qeu coal)`vil)
::
lop
|- ^+ lop
?~ lop ~
=+ pol=[n.lop $(lop l.lop) $(lop r.lop)]
?: =(tiq q.tel.n.lop) pol
~(nip to `(qeu clue)`pol)
==
:: ::
++ done :: process cooked ack ++ done :: process cooked ack
|= {lyd/(unit coal) dam/flap cop/coop lag/@dr} |= {lyd/(unit coal) dam/flap cop/coop lag/@dr}
^+ +> ^+ +>
@ -1993,32 +2011,91 @@
^+ . :: wakeup ^+ . :: wakeup
. .
:: ::
++ ve :: ve:ho:um:am ++ ve :: outbound core
|_ {kos/bole colt} :: new outgoing core |_ $: kos/bole ::
++ ve-abet :: abet:we:ho:um:am mup/_pume ::
%= +> :: resolve colt ::
== ::
++ ve-abet :: resolve core
=. . ve-able
=. . ve-feed
=. . ve-able
=. . ve-tire
%= +>
sal.bah sal.bah
(~(put by sal.bah) kos +<+) (~(put by sal.bah) kos +<+>)
== ==
::
++ ve-wait :: next wakeup
^- (unit @da)
!!
:: :: :: ::
++ ve-wood :: send ++ ve-able :: apply pump effects
|= {cha/path val/*} ^+ .
=< ve-abet =^ fex myn abet:mup
^+ +> =. mup ~(. pume ~ myn)
=^ pex diz (zuul:diz now [%bond [(mix kos 1) seq] cha val]) |- ^+ +>.$
%_ +>.$ ?~ fex +>.$
seq +(seq) %= $
cob +>.$
%+ ~(put by cob) =. +>.$ $(fex t.fex)
seq ?- -.i.fex
^- comb $send
!! +>.$(+> (busk xong:diz [q.i.fex ~]))
::
$good
(ve-good p.i.fex q.i.fex)
==
== ==
:: :: ::
++ ve-back :: hear an ack
|= {dam/flap cop/coop lag/@dr}
+>(mup (back:mup dam cop lag))
:: ::
++ ve-feed :: feed pump
^+ .
=^ cly . (ve-find want.mup)
+(mup (ship:mup now cly))
:: ::
++ ve-find :: collect packets
|= may/@ud
^- {(list clue) _+>}
=- [(flop -<) ->]
=+ [inx=lac hav=*(list clue)]
|- ^- {(list clue) _+>.^$}
?: |(=(0 may) =(inx seq)) [hav +>.^$]
=^ hey +>.^$ (ve-flow inx may hav)
$(inx +(inx), may p.hey, hav q.hey)
:: ::
++ ve-flow :: collect from msg
|= {tiq/tick may/@ud hav/(list clue)}
=+ mob=(~(got by cob) tiq)
|- ^- {(pair @ud (list clue)) _+>.^$}
?: |(=(0 may) ?=($~ cly.mob))
[[may hav] +>.^$(cob (~(put by cob) tiq mob))]
%= $
may (dec may)
hav [i.cly.mob hav]
cly.mob t.cly.mob
==
:: ::
++ ve-good :: handle ack
|= {paz/part cop/coop}
^+ +>
=+ bum=(~(get by cob) q.paz)
?: |(?=($~ bum) =(~ cly.u.bum))
~& [%ve-good-ignore paz ?=($~ cop)]
+>.$
?^ cop
::
:: a failure; save this nack, clear the message
::
~& [%ve-good-fail q.paz]
%_ +>.$
mup (cull:mup q.paz)
cob (~(put by cob) q.paz u.bum(cly ~, cup `cop))
==
?> (lth ack.u.bum num.u.bum)
=. ack.u.bum +(ack.u.bum)
=. cup.u.bum ?.(=(ack.u.bum num.u.bum) ~ [~ ~])
+>.$(cob (~(put by cob) q.paz u.bum))
:: ::
++ ve-tire :: report results ++ ve-tire :: report results
|- ^+ + |- ^+ +
=+ zup=(~(get by cob) lac) =+ zup=(~(get by cob) lac)
@ -2033,7 +2110,73 @@
[%cola [our her] kos [cha u.cup]:u.zup] [%cola [our her] kos [cha u.cup]:u.zup]
[%coke [our her] (~(got by r.zam.bah) kos) [cha u.cup]:u.zup] [%coke [our her] (~(got by r.zam.bah) kos) [cha u.cup]:u.zup]
== ==
:: ::
++ ve-wait :: next wakeup
^- (unit @da)
wait:mup
:: ::
++ ve-wood :: send
|= {cha/path val/*}
^+ +>
=^ pex diz (zuul:diz now [%bond [(mix kos 1) seq] cha val])
%_ +>.$
seq +(seq)
cob
%+ ~(put by cob)
seq
^- comb
:* ~
cha
(lent pex)
0
=+ inx=0
|- ?~ pex ~
:_ $(pex +.pex, inx +(inx))
[& [inx seq] (shaf %flap i.pex) i.pex]
==
==
-- --
:: ::
++ vind :: default colt
^- colt
:* 0 :: seq/tick
0 :: lac/tick
~ :: mis/(map tick (pair path coop))
~ :: cob/(map tick comb)
^- mini
:* ^- stat
:* :* 0 :: cur/@ud
4 :: max/@ud
0 :: rey/@ud
==
:* (div ~s1 30) :: rtt/@dr
~2010.1.1 :: las/@da
~2010.1.1 :: lad/@da
== ==
~
~
== ==
:: ::
++ vond :: outgoing core
|= {kos/bole cot/colt}
~(. ve kos ~(. pume ~ myn.cot) cot)
:: ::
++ vand :: response core
|= kos/bole
(vond kos (fall (~(get by sal.bah) kos) vind))
:: ::
++ vend :: request core
|= hen/duct
^+ ve
=+ ust=(~(get by q.zam.bah) hen)
?~ ust
%. [p.zam.bah vind]
%_ vond
p.zam.bah (add 2 p.zam.bah)
q.zam.bah (~(put by q.zam.bah) hen p.zam.bah)
r.zam.bah (~(put by r.zam.bah) p.zam.bah hen)
==
(vond u.ust (~(got by sal.bah) u.ust))
:: ::
++ we :: we:ho:um:am ++ we :: we:ho:um:am
|_ {kos/bole colt} :: outgoing core |_ {kos/bole colt} :: outgoing core