summaryrefslogtreecommitdiff
path: root/tcpip/test_server.icl
blob: c5cf11f67910dc4c617a9da1bdae78dbd84c0a72 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module test_server

import StdEnv
import StdLib
import TCPIP

Start w
# (ok, mbListener, w) = openTCP_Listener 12345 w
| not ok = abort "Couldn't open port 12345\n"
# listener = fromJust mbListener
# (listener, w) = loop listener w //((_,duplexChannel),listener,w) = receive listener w
# w = closeRChannel listener w
= w
where
    loop :: !TCP_Listener !*World -> (TCP_Listener, *World)
    loop li w
    # ((ip,dupChan),li,w) = receive li w
    # (msg, rChan, w) = receive dupChan.rChannel w
      dupChan = {dupChan & rChannel=rChan}
    # (sChan, w) = send msg dupChan.sChannel w
      dupChan = {dupChan & sChannel=sChan}
    # w = closeRChannel dupChan.rChannel w
    # w = closeChannel dupChan.sChannel w
    # (io, w) = stdio w
    # io = fwrites (toString ip +++ ": " +++ toString msg) io
    # (_, w) = fclose io w
    | length [1..999999999] == 999999999 = loop li w