forked from vv/bugafriend
27 lines
1006 B
Scheme
27 lines
1006 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)
|
|
(unless netlayer
|
|
(error "Couldn't spawn netlayer."))
|
|
(spawn ^mycapn-registry netlayer 'prelay))
|
|
#:promise? #t))
|