blob: bbfc0adbafc0c06e8e76e7936a73f88826760268 (
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 edit)
#:use-module (community-garden actors)
#:use-module (goblins)
#:use-module (goblins vrun)
#:use-module (goblins ocapn ids)
#:use-module (goblins ocapn captp)
#:use-module (goblins ocapn netlayer onion)
#:use-module (ice-9 match)
#:export (edit-garden))
(define (edit-garden name garden-address)
(define garden-sref (string->ocapn-id garden-address))
(define vat (spawn-vat))
(define-vat-run vat-run vat)
(define onion-netlayer (vat-run (new-onion-netlayer)))
(define mycapn (vat-run (spawn-mycapn onion-netlayer)))
(define garden-vow (vat-run ($ mycapn 'enliven garden-sref)))
(define approved-plants-vow (vat-run (<- garden-vow 'get-approved-plants)))
(define gardener (vat-run (spawn ^gardener name garden-vow)))
(define running? #t)
(while running?
(match (read)
(('quit)
(set! running? #f))
(('get-garden-name)
(vat-run (on ($ gardener 'get-garden-name)
(lambda (name)
(format #t "~a\n" name)))))
(('dig-up x y)
(vat-run ($ gardener 'dig-up x y)))
(('plant x y)
(vat-run
(on approved-plants-vow
(match-lambda
((plant . _)
($ gardener 'plant x y plant))))))
(exp
(format #t "unrecognized command: ~a\n" exp)))))
|