Mercurial > urweb
view tests/DynChannel.ur @ 2068:b6adfe99bb08
Check realloc's return code to prevent segfault on out of memory condition (Part 2)
author | Sergey Mironov <grrwlf@gmail.com> |
---|---|
date | Sun, 24 Aug 2014 11:56:41 +0400 |
parents | 3dd041b00087 |
children |
line wrap: on
line source
table channels : {Id : int, Channel:channel xbody} fun dosend (s:string) : transaction unit = c <- oneRow1 (SELECT * FROM channels); debug ("Sending " ^ s ^ " through the channel..."); send c.Channel <xml>{[s]}</xml> fun mkchannel {} : transaction xbody = c <- channel; s <- source <xml/>; dml( DELETE FROM channels WHERE Id >= 0); dml( INSERT INTO channels(Id, Channel) VALUES(0, {[c]}) ); return <xml> <button value="Send" onclick={fn _ => rpc(dosend "blabla")}/> <active code={spawn(x <- recv c; alert ("Got something from the channel"); set s x); return <xml/>}/> <dyn signal={signal s}/> </xml> fun main {} : transaction page = s <- source <xml/>; return <xml> <head/> <body> <button value="Register" onclick={fn _ => x <- rpc(mkchannel {}); set s x }/> <dyn signal={signal s}/> </body> </xml>