Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (use-modules (srfi srfi-9)
- (srfi srfi-1)
- (srfi srfi-11)
- ((goblins) #:hide ($))
- ((goblins) #:select ($) #:prefix $)
- (ice-9 match)
- (goblins utils hashmap)
- (goblins actor-lib cell)
- (goblins actor-lib methods)
- (goblins actor-lib on)
- (goblins ocapn ids)
- (goblins ocapn captp)
- (goblins ocapn netlayer prelay)
- (goblins ocapn netlayer tcp-tls)
- (goblins ocapn netlayer prelay-utils)
- (goblins persistence-store syrup)
- (goblins persistence-store memory)
- (fibers conditions))
- (define can-quit?
- (make-condition))
- (define-actor (^root bcom nose mycapn)
- (methods
- [(nose) nose]
- [(mycapn) mycapn]
- [(register new-mycapn)
- (bcom (^root bcom nose new-mycapn))]))
- (define-actor (^nose bcom)
- (lambda ()
- (format #t "Got booped!")
- #f))
- (define boop-env
- (namespace-env '(boop client friends) ^nose ^root))
- (define prelay-account-sref
- (string->ocapn-id
- (cadr (command-line))))
- (define-values (friends-vat root)
- (spawn-persistent-vat
- (persistence-env-compose boop-env prelay-utils-env captp-env tcp-tls-netlayer-env)
- (lambda ()
- (spawn ^root (spawn ^nose) #f))
- (make-syrup-store "friends.syrup")
- #:name "friends"))
- (define nose
- (with-vat friends-vat
- ($$ root 'nose)))
- (define (get-or-create-mycapn)
- (on (<- root 'mycapn)
- (lambda (maybe-mycapn)
- (format #t "maybe mycapn is ~a" maybe-mycapn)
- (pk 'fetch)
- (or maybe-mycapn
- (on (spawn-mycapn (fetch-and-spawn-prelay-netlayer prelay-account-sref #:encrypted? #f))
- (lambda (mycapn)
- (format #t "registering new mycapn")
- ($$ root 'register mycapn)
- mycapn)
- #:promise? #t)))
- #:promise? #t))
- (with-vat friends-vat
- (on (get-or-create-mycapn)
- (lambda (mycapn)
- (format #t "mycapn is ~a nose ~a" mycapn nose)
- (on (<- mycapn 'register nose 'prelay)
- (lambda (sref)
- (format #t "People can now boop you at ~a" (ocapn-id->string sref))
- #f)))))
- (wait can-quit?)
Advertisement
Add Comment
Please, Sign In to add comment