diff options
Diffstat (limited to '092socket.mu')
-rw-r--r-- | 092socket.mu | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/092socket.mu b/092socket.mu index 9fa4e415..eacc501f 100644 --- a/092socket.mu +++ b/092socket.mu @@ -16,10 +16,13 @@ F - example-server-test: $open-server-socket failed] ] source:&:source:char <- start-reading-from-network 0/real-resources, [localhost/], port response:text <- drain source +#? $print [app: done draining], 10/newline 10:@:char/raw <- copy *response memory-should-contain [ 10:array:character <- [abc] ] +#? $print [app: closing server socket], 10/newline + $close-socket socket ] # helper just for this scenario def example-handler query:text -> response:text [ @@ -62,6 +65,7 @@ F - example-server-test: $accept failed] query:text <- drain contents response:text <- call request-handler, query write-to-socket session, response +#? $print [app: closing session socket], 10/newline $close-socket session ] @@ -86,7 +90,7 @@ def start-reading-from-network resources:&:resources, uri:text -> contents:&:sou req:text <- interpolate [GET _ HTTP/1.1], path request-socket socket, req contents:&:source:char, sink:&:sink:char <- new-channel 10000 - start-running receive-from-socket socket, sink + start-running receive-from-client-socket-and-close socket, sink ] def request-socket socket:num, s:text -> socket:num [ @@ -118,6 +122,7 @@ def receive-from-socket socket:num, sink:&:sink:char -> sink:&:sink:char [ done?:bool <- greater-or-equal i, bytes-read break-if done? c:char <- index *req, i # todo: unicode +#? $print [read ], c, 10/newline sink <- write sink, c i <- add i, 1 loop @@ -125,6 +130,15 @@ def receive-from-socket socket:num, sink:&:sink:char -> sink:&:sink:char [ loop-unless eof? } sink <- close sink +#? $print [read status: ] found? [ ] eof? [ ] error 10/newline +] + +def receive-from-client-socket-and-close socket:num, sink:&:sink:char -> sink:&:sink:char [ + local-scope + load-ingredients + sink <- receive-from-socket socket, sink +#? $print [app: closing socket after reading], 10/newline + $close-socket socket ] def write-to-socket socket:num, s:text [ @@ -135,6 +149,7 @@ def write-to-socket socket:num, s:text [ { done?:bool <- greater-or-equal i, len break-if done? +#? $print i, 10/newline c:char <- index *s, i $write-to-socket socket, c i <- add i, 1 |