19 lines
666 B
Racket
19 lines
666 B
Racket
|
#lang imperative-syndicate
|
||
|
|
||
|
(provide (struct-out broker-loopback-connection))
|
||
|
|
||
|
(require "../client.rkt")
|
||
|
(require "../wire-protocol.rkt")
|
||
|
(require "../protocol.rkt")
|
||
|
|
||
|
(require/activate imperative-syndicate/broker/server)
|
||
|
|
||
|
(assertion-struct broker-loopback-connection (scope))
|
||
|
|
||
|
(spawn #:name 'loopback-client-factory
|
||
|
(during/spawn (broker-connection ($ address (broker-loopback-connection $scope)))
|
||
|
#:name address
|
||
|
(assert (server-connection address scope))
|
||
|
(on (message (server-outbound address $p)) (send! (broker-packet address p)))
|
||
|
(generic-client-session-facet address (lambda (x) (send! (server-inbound address x))))))
|