#lang syndicate ;;; SPDX-License-Identifier: LGPL-3.0-or-later ;;; SPDX-FileCopyrightText: Copyright © 2021 Tony Garnock-Jones (module+ main (require racket/cmdline) (require (only-in racket/port read-line-evt)) (require syndicate/drivers/tcp) (require syndicate/drivers/racket-event) (define host "127.0.0.1") (define port 5999) (command-line #:once-each [("--host" "-H") hostname "Set hostname to connect to" (set! host hostname)] [("--port" "-p") port-number "Set port number to connect to" (set! port (string->number port-number))]) (actor-system/dataspace (ds) (spawn-racket-event-driver ds) (spawn-tcp-driver ds) (spawn (establish-connection ds (TcpOutbound host port) #:on-connected (lambda (peer) (at ds (when (message (RacketEvent (read-line-evt (current-input-port)) $vs)) (match (car vs) [(? eof-object?) (log-info "EOF on stdin.") (stop-current-facet)] [line (send-data peer (string-append line "\n"))])))) #:on-rejected (lambda (message) (stop-current-facet (log-error "~a" message))) #:on-disconnected (lambda () (stop-current-facet (log-info "Disconnected"))) #:on-data display))))