diff options
Diffstat (limited to 'ebus-racket')
-rw-r--r-- | ebus-racket/net-repl.rkt | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ebus-racket/net-repl.rkt b/ebus-racket/net-repl.rkt new file mode 100644 index 0000000..1d53807 --- /dev/null +++ b/ebus-racket/net-repl.rkt @@ -0,0 +1,34 @@ +#lang racket +(require mzlib/thread) +(require "db.rkt") + +(define-namespace-anchor a) +(define ns (namespace-anchor->namespace a)) + +(define (my-eval expr) + (eval expr ns)) + + +(define (run-tcp-repl namespace port) + (thread + (lambda () + (run-server port + net-repl-connection + #f + (lambda (port-k max-allow-wait reuse?) + (tcp-listen port-k max-allow-wait reuse? "127.0.0.1")) + )))) + + (define (net-repl-connection i o) + (let/ec exit + (parameterize ([current-input-port i] + [current-output-port o] + [current-error-port o] + [current-namespace ns]) + (read-eval-print-loop)) + (fprintf o "\nBye...\n") + (close-output-port o))) + + +(define-namespace-anchor ns-anchor) +(thread-wait (run-tcp-repl (namespace-anchor->namespace ns-anchor) 8890)) |