adamc@694: table t : {A : int, Ch : channel string} adamc@694: adamc@694: fun listener n ch = adamc@694: s <- recv ch; adamc@694: alert (show n ^ ": " ^ s); adamc@694: listener n ch adamc@694: adamc@694: fun speak id msg = adamc@694: r <- oneRow (SELECT t.Ch FROM t WHERE t.A = {[id]}); adamc@694: send r.T.Ch msg adamc@694: adamc@694: fun main () : transaction page = adamc@694: ch1 <- channel; adamc@694: dml (INSERT INTO t (A, Ch) VALUES (1, {[ch1]})); adamc@694: ch2 <- channel; adamc@694: dml (INSERT INTO t (A, Ch) VALUES (2, {[ch2]})); adamc@694: adamc@694: s1 <- source ""; adamc@694: s2 <- source ""; adamc@694: adamc@694: return adamc@694: 1: