From ebd14c92f8b15f6d9388ea9bf6f19793a1b77a59 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 30 Jul 2013 23:39:58 -0700 Subject: std: Remove PortSet. Not supported by new scheduler. Replace uses with SharedChan. --- src/libstd/comm.rs | 83 ++---------------------------------------------------- 1 file changed, 2 insertions(+), 81 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/comm.rs b/src/libstd/comm.rs index 9fe6aa57958..acdf2cee841 100644 --- a/src/libstd/comm.rs +++ b/src/libstd/comm.rs @@ -14,14 +14,10 @@ Message passing #[allow(missing_doc)]; -use cast::{transmute, transmute_mut}; -use container::Container; +use cast::transmute; use either::{Either, Left, Right}; use kinds::Send; -use option::{Option, Some, None}; -use uint; -use vec::OwnedVector; -use util::replace; +use option::{Option, Some}; use unstable::sync::Exclusive; use rtcomm = rt::comm; use rt; @@ -143,81 +139,6 @@ impl Selectable for Port { } } -/// Treat many ports as one. -#[unsafe_mut_field(ports)] -pub struct PortSet { - ports: ~[pipesy::Port], -} - -impl PortSet { - pub fn new() -> PortSet { - PortSet { - ports: ~[] - } - } - - pub fn add(&self, port: Port) { - let Port { inner } = port; - let port = match inner { - Left(p) => p, - Right(_) => fail!("PortSet not implemented") - }; - unsafe { - let self_ports = transmute_mut(&self.ports); - self_ports.push(port) - } - } - - pub fn chan(&self) -> Chan { - let (po, ch) = stream(); - self.add(po); - ch - } -} - -impl GenericPort for PortSet { - fn try_recv(&self) -> Option { - unsafe { - let self_ports = transmute_mut(&self.ports); - let mut result = None; - // we have to swap the ports array so we aren't borrowing - // aliasable mutable memory. - let mut ports = replace(self_ports, ~[]); - while result.is_none() && ports.len() > 0 { - let i = wait_many(ports); - match ports[i].try_recv() { - Some(m) => { - result = Some(m); - } - None => { - // Remove this port. - let _ = ports.swap_remove(i); - } - } - } - *self_ports = ports; - result - } - } - fn recv(&self) -> T { - self.try_recv().expect("port_set: endpoints closed") - } -} - -impl Peekable for PortSet { - fn peek(&self) -> bool { - // It'd be nice to use self.port.each, but that version isn't - // pure. - for uint::range(0, self.ports.len()) |i| { - let port: &pipesy::Port = &self.ports[i]; - if port.peek() { - return true; - } - } - false - } -} - /// A channel that can be shared between many senders. pub struct SharedChan { inner: Either>, rtcomm::SharedChan> -- cgit 1.4.1-3-g733a5