blob: c2bc4a9fe441006ed288ed408bcc903decac93e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
(define-module (community-garden host)
#:use-module (community-garden actors)
#:use-module (community-garden garden-bed)
#:use-module (community-garden plant)
#:use-module (community-garden view)
#:use-module (goblins)
#:use-module (goblins vrun)
#:use-module (goblins ocapn ids)
#:use-module (goblins ocapn captp)
#:use-module (goblins ocapn netlayer onion)
#:export (host-garden))
(define (host-garden garden-name user-name)
(define garden-vat (spawn-vat))
(define user-vat (spawn-vat))
(define-vat-run garden-run garden-vat)
(define-vat-run user-run user-vat)
(define the-botanist (garden-run (spawn ^botanist)))
(define the-garden-gate (garden-run (spawn ^garden-gate the-botanist)))
(define sunflower/approved
(garden-run ($ the-botanist 'approve-plant sunflower)))
(define cabbage/approved
(garden-run ($ the-botanist 'approve-plant cabbage)))
(define our-garden
(garden-run
(spawn ^garden garden-name (make-garden-bed 8 8) the-garden-gate)))
(define our-garden-community
(garden-run
(spawn ^garden-community our-garden)))
(define user
(user-run (<- our-garden-community 'register-gardener user-name)))
(define onion-netlayer (garden-run (new-onion-netlayer)))
(define mycapn (garden-run (spawn-mycapn onion-netlayer)))
(garden-run
(let ((community-sref ($ mycapn 'register our-garden-community 'onion)))
(format #t "Connect to: ~a\n" (ocapn-id->string community-sref))))
(view-garden user-vat user))
|