From b39515c6e53eced0899a019b38f0926cc3f12244 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Thu, 26 May 2022 17:35:09 +0200 Subject: [PATCH] dummy-port-relay-loader.rkt --- .../dummy-port-relay-loader.rkt | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 syndicate-examples/dummy-port-relay-loader.rkt diff --git a/syndicate-examples/dummy-port-relay-loader.rkt b/syndicate-examples/dummy-port-relay-loader.rkt new file mode 100644 index 0000000..cfcd936 --- /dev/null +++ b/syndicate-examples/dummy-port-relay-loader.rkt @@ -0,0 +1,41 @@ +#lang syndicate +;;; SPDX-License-Identifier: LGPL-3.0-or-later +;;; SPDX-FileCopyrightText: Copyright © 2022 Tony Garnock-Jones + +(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))]))))) + ))))))