aboutsummaryrefslogtreecommitdiffhomepage
path: root/demo/roundTrip.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-04-05 11:24:55 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-04-05 11:24:55 -0400
commit37eeae6bc2503281d1b806c85aa0e70645fd9966 (patch)
tree629c88474e3f44efa4384f199ee22debb4e240bd /demo/roundTrip.ur
parent3b2a5f0903f59d0a58de4201ab4f16d34423bf25 (diff)
RoundTrip demo
Diffstat (limited to 'demo/roundTrip.ur')
-rw-r--r--demo/roundTrip.ur29
1 files changed, 29 insertions, 0 deletions
diff --git a/demo/roundTrip.ur b/demo/roundTrip.ur
new file mode 100644
index 00000000..a2be8083
--- /dev/null
+++ b/demo/roundTrip.ur
@@ -0,0 +1,29 @@
+table channels : { Client : client, Channel : channel (string * int * float) }
+
+fun writeBack v =
+ me <- self;
+ r <- oneRow (SELECT channels.Channel FROM channels WHERE channels.Client = {[me]});
+ send r.Channels.Channel v
+
+fun main () =
+ me <- self;
+ ch <- channel;
+ dml (INSERT INTO channels (Client, Channel) VALUES ({[me]}, {[ch]}));
+
+ buf <- Buffer.create;
+
+ let
+ fun receiver () =
+ v <- recv ch;
+ Buffer.write buf ("(" ^ v.1 ^ ", " ^ show v.2 ^ ", " ^ show v.3 ^ ")");
+ receiver ()
+
+ fun sender s n f =
+ sleep 2000;
+ writeBack (s, n, f);
+ sender (s ^ "!") (n + 1) (f + 1.23)
+ in
+ return <xml><body onload={spawn (receiver ()); sender "" 0 0.0}>
+ <dyn signal={Buffer.render buf}/>
+ </body></xml>
+ end