Mercurial > urweb
view tests/channelThief.ur @ 2302:ace43b90b388
Tiny concurrency bugfix (race condition on cache->timeNow).
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Fri, 20 Nov 2015 10:51:43 -0500 |
parents | a671e5258a2c |
children |
line wrap: on
line source
table t : { Ch : channel string } fun go () = let fun overwrite () = dml (DELETE FROM t WHERE TRUE); ch <- channel; dml (INSERT INTO t (Ch) VALUES ({[ch]})); return ch fun retrieve () = oneRowE1 (SELECT (t.Ch) FROM t) fun transmit () = ch <- retrieve (); send ch "Test" fun listenOn ch = s <- recv ch; alert s in ch <- overwrite (); return <xml><body onload={listenOn ch}> <button value="overwrite" onclick={fn _ => ch <- rpc (overwrite ()); listenOn ch}/> <button value="retrieve" onclick={fn _ => ch <- rpc (retrieve ()); listenOn ch}/> <button value="transmit" onclick={fn _ => rpc (transmit ())}/> </body></xml> end fun main () = return <xml><body> <form><submit action={go}/></form> </body></xml>