Mercurial > urweb
view tests/channelThief.ur @ 2030:6add6d00ef5f
Call try_rollback before resetting the context
This will allow FFI cleanup handlers to complete.
author | Sergey Mironov <grrwlf@gmail.com> |
---|---|
date | Sun, 15 Jun 2014 21:13:12 +0000 |
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>