From 5f5758888762aa1f70355d3440ef0f0e58f80cb8 Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Thu, 16 Aug 2012 17:50:21 -0700 Subject: [PATCH] Update the rock-paper-scissors example in the tutorial, and rename some types in core::pipes --- doc/tutorial.md | 33 +++++++++++++------------- src/compiletest/procsrv.rs | 2 +- src/libcore/pipes.rs | 12 +++++----- src/libstd/arc.rs | 2 +- src/test/bench/msgsend-pipes-shared.rs | 4 ++-- src/test/bench/msgsend-pipes.rs | 6 ++--- src/test/bench/shootout-pfib.rs | 2 +- src/test/run-pass/task-comm-14.rs | 2 +- src/test/run-pass/task-comm-3.rs | 2 +- src/test/run-pass/task-comm-6.rs | 2 +- src/test/run-pass/task-comm-7.rs | 2 +- src/test/run-pass/task-comm-9.rs | 2 +- 12 files changed, 35 insertions(+), 36 deletions(-) diff --git a/doc/tutorial.md b/doc/tutorial.md index 1d7a5a9585a..df1573fc494 100644 --- a/doc/tutorial.md +++ b/doc/tutorial.md @@ -74,7 +74,7 @@ Here's a parallel game of rock, paper, scissors to whet your appetite. ~~~~ use std; -import comm::listen; +import pipes::PortSet; import task::spawn; import iter::repeat; import rand::{seeded_rng, seed}; @@ -83,25 +83,24 @@ import io::println; fn main() { // Open a channel to receive game results - do listen |result_from_game| { + let result_from_game = PortSet(); + let times = 10; + let player1 = ~"graydon"; + let player2 = ~"patrick"; - let times = 10; - let player1 = ~"graydon"; - let player2 = ~"patrick"; - - for repeat(times) { - // Start another task to play the game - do spawn |copy player1, copy player2| { - let outcome = play_game(player1, player2); - result_from_game.send(outcome); - } + for repeat(times) { + // Start another task to play the game + let result = result_from_game.chan(); + do spawn |copy player1, copy player2| { + let outcome = play_game(player1, player2); + result.send(outcome); } + } - // Report the results as the games complete - for range(0, times) |round| { - let winner = result_from_game.recv(); - println(#fmt("%s wins round #%u", winner, round)); - } + // Report the results as the games complete + for range(0, times) |round| { + let winner = result_from_game.recv(); + println(#fmt("%s wins round #%u", winner, round)); } fn play_game(player1: ~str, player2: ~str) -> ~str { diff --git a/src/compiletest/procsrv.rs b/src/compiletest/procsrv.rs index 312c48a2406..bd9f8f4385f 100644 --- a/src/compiletest/procsrv.rs +++ b/src/compiletest/procsrv.rs @@ -60,7 +60,7 @@ fn run(lib_path: ~str, writeclose(pipe_in.out, input); - let p = pipes::port_set(); + let p = pipes::PortSet(); let ch = p.chan(); do task::spawn_sched(task::SingleThreaded) { let errput = readclose(pipe_err.in); diff --git a/src/libcore/pipes.rs b/src/libcore/pipes.rs index 62039e4c66f..c440660990c 100644 --- a/src/libcore/pipes.rs +++ b/src/libcore/pipes.rs @@ -93,7 +93,7 @@ export atomic_add_acq, atomic_sub_rel; export send_packet, recv_packet, send, recv, try_recv, peek; export select, select2, selecti, select2i, selectable; export spawn_service, spawn_service_recv; -export stream, port, chan, shared_chan, port_set, channel; +export stream, port, chan, SharedChan, PortSet, channel; export oneshot, chan_one, port_one; export recv_one, try_recv_one, send_one, try_send_one; @@ -1020,8 +1020,8 @@ impl port: recv { } } -// Treat a whole bunch of ports as one. -struct port_set : recv { +/// Treat many ports as one. +struct PortSet : recv { let mut ports: ~[pipes::port]; new() { self.ports = ~[]; } @@ -1096,9 +1096,9 @@ impl port: selectable { } /// A channel that can be shared between many senders. -type shared_chan = unsafe::Exclusive>; +type SharedChan = unsafe::Exclusive>; -impl shared_chan: channel { +impl SharedChan: channel { fn send(+x: T) { let mut xx = some(x); do self.with |chan| { @@ -1119,7 +1119,7 @@ impl shared_chan: channel { } /// Converts a `chan` into a `shared_chan`. -fn shared_chan(+c: chan) -> shared_chan { +fn SharedChan(+c: chan) -> SharedChan { unsafe::exclusive(c) } diff --git a/src/libstd/arc.rs b/src/libstd/arc.rs index d6e59d6149f..51ee4a5178b 100644 --- a/src/libstd/arc.rs +++ b/src/libstd/arc.rs @@ -423,7 +423,7 @@ mod tests { let (c, p) = pipes::stream(); do task::spawn() { - let p = pipes::port_set(); + let p = pipes::PortSet(); c.send(p.chan()); let arc_v = p.recv(); diff --git a/src/test/bench/msgsend-pipes-shared.rs b/src/test/bench/msgsend-pipes-shared.rs index 8b0eeb15cb3..26741f6298f 100644 --- a/src/test/bench/msgsend-pipes-shared.rs +++ b/src/test/bench/msgsend-pipes-shared.rs @@ -14,7 +14,7 @@ use std; import io::Writer; import io::WriterUtil; -import pipes::{port, chan, shared_chan}; +import pipes::{port, chan, SharedChan}; macro_rules! move_out { { $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } @@ -48,7 +48,7 @@ fn run(args: &[~str]) { let (to_parent, from_child) = pipes::stream(); let (to_child, from_parent) = pipes::stream(); - let to_child = shared_chan(to_child); + let to_child = SharedChan(to_child); let size = option::get(uint::from_str(args[1])); let workers = option::get(uint::from_str(args[2])); diff --git a/src/test/bench/msgsend-pipes.rs b/src/test/bench/msgsend-pipes.rs index 06b4213970b..fc041382721 100644 --- a/src/test/bench/msgsend-pipes.rs +++ b/src/test/bench/msgsend-pipes.rs @@ -10,7 +10,7 @@ use std; import io::Writer; import io::WriterUtil; -import pipes::{port, port_set, chan}; +import pipes::{port, PortSet, chan}; macro_rules! move_out { { $x:expr } => { unsafe { let y <- *ptr::addr_of($x); y } } @@ -22,7 +22,7 @@ enum request { stop } -fn server(requests: port_set, responses: pipes::chan) { +fn server(requests: PortSet, responses: pipes::chan) { let mut count = 0u; let mut done = false; while !done { @@ -43,7 +43,7 @@ fn server(requests: port_set, responses: pipes::chan) { fn run(args: &[~str]) { let (to_parent, from_child) = pipes::stream(); let (to_child, from_parent_) = pipes::stream(); - let from_parent = port_set(); + let from_parent = PortSet(); from_parent.add(from_parent_); let size = option::get(uint::from_str(args[1])); diff --git a/src/test/bench/shootout-pfib.rs b/src/test/bench/shootout-pfib.rs index 7942392f2b8..225f3d98c0e 100644 --- a/src/test/bench/shootout-pfib.rs +++ b/src/test/bench/shootout-pfib.rs @@ -30,7 +30,7 @@ fn fib(n: int) -> int { } else if n <= 2 { c.send(1); } else { - let p = pipes::port_set(); + let p = pipes::PortSet(); let ch = p.chan(); task::spawn(|| pfib(ch, n - 1) ); let ch = p.chan(); diff --git a/src/test/run-pass/task-comm-14.rs b/src/test/run-pass/task-comm-14.rs index 0e0bf640014..0b7e939ce31 100644 --- a/src/test/run-pass/task-comm-14.rs +++ b/src/test/run-pass/task-comm-14.rs @@ -1,7 +1,7 @@ import task; fn main() { - let po = pipes::port_set(); + let po = pipes::PortSet(); // Spawn 10 tasks each sending us back one int. let mut i = 10; diff --git a/src/test/run-pass/task-comm-3.rs b/src/test/run-pass/task-comm-3.rs index a4296df8618..1c116787eaf 100644 --- a/src/test/run-pass/task-comm-3.rs +++ b/src/test/run-pass/task-comm-3.rs @@ -24,7 +24,7 @@ fn test00() { debug!{"Creating tasks"}; - let po = pipes::port_set(); + let po = pipes::PortSet(); let mut i: int = 0; diff --git a/src/test/run-pass/task-comm-6.rs b/src/test/run-pass/task-comm-6.rs index 8bc93a78913..1be9fc34833 100644 --- a/src/test/run-pass/task-comm-6.rs +++ b/src/test/run-pass/task-comm-6.rs @@ -9,7 +9,7 @@ fn main() { test00(); } fn test00() { let mut r: int = 0; let mut sum: int = 0; - let p = pipes::port_set(); + let p = pipes::PortSet(); let c0 = p.chan(); let c1 = p.chan(); let c2 = p.chan(); diff --git a/src/test/run-pass/task-comm-7.rs b/src/test/run-pass/task-comm-7.rs index 1df3de6ba1e..3963152257b 100644 --- a/src/test/run-pass/task-comm-7.rs +++ b/src/test/run-pass/task-comm-7.rs @@ -11,7 +11,7 @@ fn test00_start(c: pipes::chan, start: int, number_of_messages: int) { fn test00() { let mut r: int = 0; let mut sum: int = 0; - let p = pipes::port_set(); + let p = pipes::PortSet(); let number_of_messages: int = 10; let c = p.chan(); diff --git a/src/test/run-pass/task-comm-9.rs b/src/test/run-pass/task-comm-9.rs index fe0eea34642..4e864865a0b 100644 --- a/src/test/run-pass/task-comm-9.rs +++ b/src/test/run-pass/task-comm-9.rs @@ -11,7 +11,7 @@ fn test00_start(c: pipes::chan, number_of_messages: int) { fn test00() { let r: int = 0; let mut sum: int = 0; - let p = pipes::port_set(); + let p = pipes::PortSet(); let number_of_messages: int = 10; let ch = p.chan();