comparison tests/roundTrip.ur @ 1348:8a169fc0838b

Change tasks to support parametric code; add clientLeaves
author Adam Chlipala <adam@chlipala.net>
date Sat, 18 Dec 2010 14:17:45 -0500
parents 7c6b6c3c7b79
children
comparison
equal deleted inserted replaced
1347:b106ca8200b1 1348:8a169fc0838b
1 table channels : { Client : client, Channel : channel (string * int * float) } 1 table channels : { Client : client, Channel : channel (string * int * float) }
2 PRIMARY KEY Client 2 PRIMARY KEY Client
3
4 table dearlyDeparted : { Client : option client, When : time }
5
6 task clientLeaves = fn cli : client =>
7 dml (INSERT INTO dearlyDeparted (Client, When) VALUES ({[Some cli]}, CURRENT_TIMESTAMP));
8 debug "Our favorite client has LEFT!"
3 9
4 fun writeBack v = 10 fun writeBack v =
5 me <- self; 11 me <- self;
6 r <- oneRow (SELECT channels.Channel FROM channels WHERE channels.Client = {[me]}); 12 r <- oneRow (SELECT channels.Channel FROM channels WHERE channels.Client = {[me]});
7 send r.Channels.Channel v 13 send r.Channels.Channel v
8 14
9 fun main () = 15 fun main' () =
10 me <- self; 16 me <- self;
11 ch <- channel; 17 ch <- channel;
12 dml (INSERT INTO channels (Client, Channel) VALUES ({[me]}, {[ch]})); 18 dml (INSERT INTO channels (Client, Channel) VALUES ({[me]}, {[ch]}));
13 19
14 buf <- Buffer.create; 20 buf <- Buffer.create;
25 error <xml>Bail out!</xml>; 31 error <xml>Bail out!</xml>;
26 receiverB () 32 receiverB ()
27 33
28 fun sender s n f = 34 fun sender s n f =
29 sleep 2000; 35 sleep 2000;
30 writeBack (s, n, f); 36 rpc (writeBack (s, n, f));
31 sender (s ^ "!") (n + 1) (f + 1.23) 37 sender (s ^ "!") (n + 1) (f + 1.23)
32 in 38 in
33 return <xml><body onload={onDisconnect (alert "Server booted me"); 39 return <xml><body onload={onDisconnect (alert "Server booted me");
34 onConnectFail (alert "Connection failed"); 40 onConnectFail (alert "Connection failed");
35 onServerError (fn s => alert ("Server error: " ^ s)); 41 onServerError (fn s => alert ("Server error: " ^ s));
36 spawn (receiverA ()); spawn (receiverB ()); sender "" 0 0.0}> 42 spawn (receiverA ()); spawn (receiverB ()); sender "" 0 0.0}>
37 <dyn signal={Buffer.render buf}/> 43 <dyn signal={Buffer.render buf}/>
38 </body></xml> 44 </body></xml>
39 end 45 end
46
47 fun main () = return <xml><body><form><submit action={main'}/></form></body></xml>