Line | |
---|
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.