Hooking up streams to webserver.

This commit is contained in:
Brad Nelson
2021-01-08 17:26:13 -08:00
parent af0960c971
commit 144693a815
3 changed files with 32 additions and 22 deletions

View File

@ -106,31 +106,30 @@ window.onload = function() {
| constant index-html | constant index-html
variable webserver variable webserver
500 constant out-size
200 stream input-stream
out-size dup stream output-stream
create out-string out-size 1+ allot align
: handle-index : handle-index
( ." Handling index.html content length" cr index-html z>s nip webserver @ WebServer.setContentLength
index-html z>s nip webserver @ WebServer.setContentLength )
." Handling index.html content length" cr
200 z" text/html" index-html webserver @ WebServer.send 200 z" text/html" index-html webserver @ WebServer.send
." Done! Handling index.html" cr
; ;
: handle-input : handle-input
." Handling input" cr
z" cmd" webserver @ WebServer.hasArg if z" cmd" webserver @ WebServer.hasArg if
." hasarg" cr z" cmd" webserver @ WebServer.arg input-stream >stream
z" cmd" webserver @ WebServer.arg out-string out-size output-stream stream>
." Got: " cr dup . 200 z" text/plain" out-string webserver @ WebServer.send
2dup type cr
['] evaluate catch drop
200 z" text/plain" z" nop" webserver @ WebServer.send
else else
." not hasarg" cr
500 z" text/plain" z" Missing Input" webserver @ WebServer.send 500 z" text/plain" z" Missing Input" webserver @ WebServer.send
then then
; ;
: serve : serve-type ( a n -- ) output-stream >stream ;
: serve-key ( -- n ) input-stream stream>ch ;
: do-serve
80 WebServer.new webserver ! 80 WebServer.new webserver !
z" /" ['] handle-index webserver @ WebServer.on z" /" ['] handle-index webserver @ WebServer.on
z" /input" ['] handle-input webserver @ WebServer.on z" /input" ['] handle-input webserver @ WebServer.on
@ -142,6 +141,14 @@ variable webserver
again again
; ;
' do-serve 10 10 task webserver-task
: serve
['] serve-type is type
['] serve-key is key
webserver-task start-task
;
: wifi ( z z -- ) : wifi ( z z -- )
WIFI_MODE_STA Wifi.mode WIFI_MODE_STA Wifi.mode
WiFi.begin 1000 ms WiFi.localIP ip. cr WiFi.begin 1000 ms WiFi.localIP ip. cr

View File

@ -18,3 +18,7 @@
r@ >read @ 1+ r@ @ mod r> >read ! ; r@ >read @ 1+ r@ @ mod r> >read ! ;
: >stream ( a n st -- ) : >stream ( a n st -- )
swap 0 do over c@ over ch>stream swap 1+ swap loop 2drop ; swap 0 do over c@ over ch>stream swap 1+ swap loop 2drop ;
: stream> ( a n st -- )
begin over 1 > over empty? 0= and while
." ch "
dup stream>ch >r rot dup r> swap c! 1+ rot 1- rot repeat 2drop 0 swap c! ;

View File

@ -1,8 +1,14 @@
( Cooperative Tasks ) ( Cooperative Tasks )
: task ( xt rsz dsz "name" )
create here >r 0 , 0 , 0 ,
here cell+ r@ cell+ ! cells allot
here r@ 2 cells + ! cells allot
dup 0= if drop else >:body r@ 2 cells + @ ! then rdrop ;
variable task-list variable task-list
: add-task ( t -- ) : start-task ( t -- )
task-list @ if task-list @ if
task-list @ @ over ! task-list @ @ over !
task-list @ ! task-list @ !
@ -12,13 +18,6 @@ variable task-list
then then
; ;
: task ( xt rsz dsz "name" )
create here >r 0 , 0 , 0 ,
here cell+ r@ cell+ ! cells allot
here r@ 2 cells + ! cells allot
dup 0= if drop else >:body r@ 2 cells + @ ! then
r> add-task ;
: pause : pause
rp@ task-list @ 2 cells + ! rp@ task-list @ 2 cells + !
sp@ task-list @ cell+ ! sp@ task-list @ cell+ !
@ -27,4 +26,4 @@ variable task-list
task-list @ 2 cells + @ rp! task-list @ 2 cells + @ rp!
; ;
0 0 0 task main-task 0 0 0 task main-task main-task start-task