@@ -11,13 +11,11 @@ $:
1111+$ state-0
1212$:
1313 search-subscriptions=(map query search-state)
14− peers=(set @p)
14+ peers=_(silt ~[~zod ~racfer-hattes])
1515 alive-peers=(set @p)
1616==
1717+$ poke
1818 $%
19− [%liveness-check ~]
20− [%gossip ~]
2119 [%add-peers (set @p)]
2220 ==
2321++ rank-results
@@ -44,6 +42,7 @@ $:
4442 [%request [%'GET' (crip (url.engine (trip query))) ~ ~] *outbound-config:iris]
4543 [%pass ~[%search-result query engine-name] %arvo %i req]
4644 ++ liveness-interval ~s30
45+ ++ gossip-interval ~s30
4746--
4847
4948=/ state *state-0
@@ -77,8 +76,9 @@ $:
7776|_ =bowl:gall
7877+* this .
7978 liveness-behn-card [%pass /check-liveness %arvo %b %wait (add now.bowl liveness-interval)]
79+ gossip-behn-card [%pass /gossip %arvo %b %wait (add now.bowl gossip-interval)]
8080++ on-init
81− [~[liveness-behn-card] this]
81+ [~[liveness-behn-card gossip-behn-card] this]
8282++ on-save !>(state)
8383++ on-load
8484 |= =vase
@@ -88,15 +88,13 @@ $:
8888 state state
8989 ==
9090++ on-poke
91− |= =cage
91+ |= [* * pk=*]
9292 ^- (quip card:agent:gall _this)
93− ?> ?=(%noun -.cage)
94− =/ poke !<(poke +.cage)
93+ =/ poke (poke pk)
94+ ~& poke
9595 ?- -.poke
96− %liveness-check
97− [~[liveness-behn-card] this]
9896 %add-peers
99− `this(peers.state (~(uni in peers.state) +.poke))
97+ [~ this(peers.state (~(put in (~(uni in peers.state) +.poke)) src.bowl))]
10098 ==
10199
102100++ on-watch
@@ -192,6 +190,13 @@ $:
192190 liveness-behn-card
193191 :-
194192 [timer checks]
193+ this
194+ [%gossip ~]
195+ :-
196+ :- gossip-behn-card
197+ %+ turn ~(tap in peers.state)
198+ |= peer=@p
199+ [%pass / %agent [peer %seax] %poke %noun !>([%add-peers peers.state])]
195200 this
196201 ==
197202++ on-fail