dummy-port-relay-loader.rkt
This commit is contained in:
parent
094838bd2b
commit
b39515c6e5
|
@ -0,0 +1,41 @@
|
|||
#lang syndicate
|
||||
;;; SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
;;; SPDX-FileCopyrightText: Copyright © 2022 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
|
||||
|
||||
(require syndicate/distributed/ports)
|
||||
(require syndicate/driver-support)
|
||||
|
||||
(require (only-in racket/system system))
|
||||
|
||||
(message-struct log (timestamp details))
|
||||
|
||||
(module+ main
|
||||
(standard-actor-system/no-services (ds)
|
||||
(spawn #:name 'main
|
||||
(spawn/link #:name 'subprocess
|
||||
(define-values (stdout-in stdout-out) (make-pipe))
|
||||
(define-values (stdin-in stdin-out) (make-pipe))
|
||||
(linked-thread
|
||||
#:name 'subprocess-io
|
||||
(lambda (facet)
|
||||
(parameterize ((current-input-port stdin-in)
|
||||
(current-output-port stdout-out))
|
||||
(system "racket dummy-port-relay.rkt"))))
|
||||
(define (cleanup!)
|
||||
(close-input-port stdout-in)
|
||||
(close-output-port stdout-out)
|
||||
(close-input-port stdin-in)
|
||||
(close-output-port stdin-out))
|
||||
(actor-add-exit-hook! this-actor cleanup!)
|
||||
(run-port-relay
|
||||
#:input-port stdout-in
|
||||
#:output-port stdin-out
|
||||
#:name 'loader-relay
|
||||
#:import (lambda (c)
|
||||
(at (embedded-value c)
|
||||
(assert (hash 'hello-from 'loader
|
||||
'log (embedded
|
||||
(object
|
||||
[#:message v
|
||||
(writeln `(got log ,v))])))))
|
||||
))))))
|
Loading…
Reference in New Issue