syndicate-2017/imperative/distributed/client/loopback.rkt

19 lines
673 B
Racket

#lang imperative-syndicate
(provide (struct-out server-loopback-connection))
(require "../client.rkt")
(require "../wire-protocol.rkt")
(require "../protocol.rkt")
(require/activate imperative-syndicate/distributed/server)
(assertion-struct server-loopback-connection (scope))
(spawn #:name 'loopback-client-factory
(during/spawn (server-connection ($ address (server-loopback-connection $scope)))
#:name address
(assert (server-poa address scope))
(on (message (message-server->poa address $p)) (send! (server-packet address p)))
(generic-client-session-facet address (lambda (x) (send! (message-poa->server address x))))))