[gambit-list] thread input/output to port
Marc Feeley
feeley at iro.umontreal.ca
Wed Oct 14 09:40:29 EDT 2009
On 2009-10-13, at 8:00 PM, lowly coder wrote:
> Sorry for dumb question --
>
> I have a tcp port. I'm starting a thread. How can I redirect all
> input/output from/to the thread to this tcp port?
>
> somethign like
>
>
> (let ((p (pre existing code that makes bidirectional port))
> .. modify the following ...
> (thread-start! (make-thread func)))
Here are three ways to do this.
Marc
(define (server1)
(tcp-service-register!
11111
(lambda () (display "Hello\n"))))
(define (server2)
(let ((s (open-tcp-server 22222)))
(let loop ()
(let ((connection (read s)))
(thread-start!
(make-root-thread
(lambda ()
(display "World\n") ;; will go to "connection"
(close-input-port (current-input-port))
(close-output-port (current-output-port)))
'hello
(thread-thread-group (current-thread))
connection
connection)))
(loop))))
(define (server3)
(let ((s (open-tcp-server 33333)))
(let loop ()
(let ((connection (read s)))
(parameterize ((current-input-port connection)
(current-output-port connection))
(thread-start!
(make-thread
(lambda ()
(display "Bonjour\n") ;; will go to "connection"
(close-input-port (current-input-port))
(close-output-port (current-output-port)))
'hello))))
(loop))))
(server1)
(thread-start! (make-thread server2))
(server3)
More information about the Gambit-list
mailing list