diff options
author | Stephen Malina <stephenmalina@gmail.com> | 2016-09-18 05:05:19 -0700 |
---|---|---|
committer | Stephen Malina <stephenmalina@gmail.com> | 2016-09-18 05:10:24 -0700 |
commit | 51ae6e61e2d14354e66b95cc028b8d1ebddfdc74 (patch) | |
tree | ab942d86a5b4967188c3ef44da6f7a30357a41a8 /server-socket.mu | |
parent | b28aae5740d3bd4fb4e33dd568c7eba6d4f6e7f8 (diff) | |
download | mu-51ae6e61e2d14354e66b95cc028b8d1ebddfdc74.tar.gz |
3399 - Update network primitives.
$write-to-socket, $read-from-socket, and $accept now pass around references to socket pointers. $read-from-socket handles EOF explicitly.
Diffstat (limited to 'server-socket.mu')
-rw-r--r-- | server-socket.mu | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/server-socket.mu b/server-socket.mu index d7be418e..dbdf1ef7 100644 --- a/server-socket.mu +++ b/server-socket.mu @@ -3,12 +3,30 @@ def main [ socket:num <- $socket 8080/port $print [Mu socket creation returned ], socket, 10/newline session:num <- $accept socket + write-to-socket session, [HTTP/1.0 200 OK + +OK] { - client-message:&:buffer <- new-buffer 1024 - c:char <- $read-from-socket session - break-unless c + c:char, eof?:boolean <- $read-from-socket session $print c + break-if eof? loop } + $print 10/newline, [Hit end of socket, closing...], 10/newline $close-socket socket, session ] + +def write-to-socket session-socket:number, s:address:array:character [ + local-scope + load-ingredients + len:number <- length *s + i:number <- copy 0 + { + done?:boolean <- greater-or-equal i, len + break-if done? + c:character <- index *s, i + $write-to-socket session-socket, c + i <- add i, 1 + loop + } +] |