1
0
Fork 0
bugafriend/bugafriend/utils/registry.scm

25 lines
935 B
Scheme

(define-module (bugafriend utils registry)
#:use-module (goblins)
#:use-module (goblins actor-lib methods)
#:use-module (goblins ocapn captp)
#:use-module (goblins ocapn netlayer prelay)
#:use-module (goblins ocapn netlayer prelay-utils)
#:use-module (ice-9 match)
#:export (prelay-sref->mycapn-registry))
;; Proposal for a registry object that bundles up a netlayer and mycapn into a single two-method capability
;; See https://community.spritely.institute/t/feedback-on-ocapn-netlayers-interface/407
(define (^mycapn-registry bcom netlayer netlayer-type)
(define mycapn (spawn-mycapn netlayer))
(methods
[(register obj)
($ mycapn 'register obj netlayer-type)]
[(enliven id)
($ mycapn 'enliven id)]))
(define (prelay-sref->mycapn-registry setup-sref)
(on (fetch-and-spawn-prelay-netlayer setup-sref)
(lambda (netlayer)
(spawn ^mycapn-registry netlayer 'prelay))
#:promise? #t))