diff 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
line wrap: on
line diff
--- a/tests/roundTrip.ur	Sat Dec 18 10:56:31 2010 -0500
+++ b/tests/roundTrip.ur	Sat Dec 18 14:17:45 2010 -0500
@@ -1,12 +1,18 @@
 table channels : { Client : client, Channel : channel (string * int * float) }
   PRIMARY KEY Client
 
+table dearlyDeparted : { Client : option client, When : time }
+
+task clientLeaves = fn cli : client =>
+                       dml (INSERT INTO dearlyDeparted (Client, When) VALUES ({[Some cli]}, CURRENT_TIMESTAMP));
+                       debug "Our favorite client has LEFT!"
+
 fun writeBack v =
     me <- self;
     r <- oneRow (SELECT channels.Channel FROM channels WHERE channels.Client = {[me]});
     send r.Channels.Channel v
 
-fun main () =
+fun main' () =
     me <- self;
     ch <- channel;
     dml (INSERT INTO channels (Client, Channel) VALUES ({[me]}, {[ch]}));
@@ -27,7 +33,7 @@
 
         fun sender s n f =
             sleep 2000;
-            writeBack (s, n, f);
+            rpc (writeBack (s, n, f));
             sender (s ^ "!") (n + 1) (f + 1.23)
     in
         return <xml><body onload={onDisconnect (alert "Server booted me");
@@ -37,3 +43,5 @@
           <dyn signal={Buffer.render buf}/>
         </body></xml>
     end
+
+fun main () = return <xml><body><form><submit action={main'}/></form></body></xml>