annotate samples/echo.tp @ 371:625b0aa9c204

Add a simple echo server sample to demonstrate socket listening
author Michael Pavone <pavone@retrodev.com>
date Wed, 12 Aug 2015 19:13:52 -0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
371
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 echo <- :sock {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 print: "New connection\n"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 data <- sock recv: 4096
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 while: { (data length) > 0 } do: {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 sock send: data
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 data <- sock recv: 4096
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 print: "Connection closed\n"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 main <- :args {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 port <- "2323"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 if: (args length) > 1 {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 port <- args get: 1
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 (socket listenOnPort: port) value: :lsock {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 print: "Listening on port " . port . "\n"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 continue? <- true
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 while: { continue? } do: {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 (lsock accept) value: :csock {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 echo: csock
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 } none: {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 print: "Failed to accept new connection\n"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 continue? <- false
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 } none: {
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 print: "Failed to listen on port " . port . "\n"
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 }
625b0aa9c204 Add a simple echo server sample to demonstrate socket listening
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 }