Rev | Line | |
---|
[18259] | 1 | (module vandusen-remote () |
---|
| 2 | |
---|
| 3 | (import chicken scheme extras) |
---|
| 4 | (use vandusen tcp srfi-18 regex-case) |
---|
| 5 | |
---|
| 6 | (plugin 'remote |
---|
| 7 | (lambda () |
---|
| 8 | (let ((listener (tcp-listen ($ 'remote-port)))) |
---|
| 9 | (add-finalizer (lambda () |
---|
| 10 | (debug "finalizing remote listener") |
---|
| 11 | (tcp-close listener))) |
---|
| 12 | |
---|
| 13 | (thread-start! (lambda () |
---|
| 14 | (let loop () |
---|
| 15 | (receive (in out) (tcp-accept listener) |
---|
| 16 | (thread-start! (lambda () |
---|
| 17 | (regex-case (read-line in) |
---|
| 18 | ((quote (: bos (submatch (+ (~ space))) |
---|
| 19 | " " (submatch (+ any)) eos)) |
---|
| 20 | (_ recipient message) |
---|
| 21 | (say message recipient))) |
---|
| 22 | (close-input-port in) |
---|
| 23 | (close-output-port out))) |
---|
| 24 | (loop))))))))) |
---|
Note: See
TracBrowser
for help on using the repository browser.