diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-09-12 13:33:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-12 13:33:45 -0400 |
commit | 910cc23a6e85cced43905f7615065b23bdb54b42 (patch) | |
tree | 3ceae959c0ebdf3f224c5c07f5b8c2cbd31dddf1 /components/debugger/lib.rs | |
parent | 9a83ab6297ddb62937fc54521b7fd4d19017e6b1 (diff) | |
parent | 2a996fbc8fef722b264389680cc55c25c46807d1 (diff) | |
download | servo-910cc23a6e85cced43905f7615065b23bdb54b42.tar.gz servo-910cc23a6e85cced43905f7615065b23bdb54b42.zip |
Auto merge of #21325 - gterzian:crossbeam_integration, r=SimonSapin,jdm
Replace mpsc with crossbeam-channel
Follow up on https://github.com/servo/servo/pull/19515
---
Selecting over multiple channels in `std::sync::mpsc` is not stable and likely never will be:
https://github.com/rust-lang/rust/issues/27800#issuecomment-260136777
> It seems the only thing keeping `mpsc_select` around is Servo.
crossbeam-channel is designed specifically to replace `std::sync::mpsc` and fix many of its shortcomings:
https://github.com/stjepang/rfcs-crossbeam/blob/channel/text/2017-11-09-channel.md
This is to be landed together with https://github.com/servo/ipc-channel/pull/183.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21325)
<!-- Reviewable:end -->
Diffstat (limited to 'components/debugger/lib.rs')
-rw-r--r-- | components/debugger/lib.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/components/debugger/lib.rs b/components/debugger/lib.rs index 6190ebec89b..938e16906e3 100644 --- a/components/debugger/lib.rs +++ b/components/debugger/lib.rs @@ -4,10 +4,9 @@ #[macro_use] extern crate log; +extern crate servo_channel; extern crate ws; -use std::sync::mpsc; -use std::sync::mpsc::channel; use std::thread; use ws::{Builder, CloseCode, Handler, Handshake}; @@ -15,7 +14,7 @@ enum Message { ShutdownServer, } -pub struct Sender(mpsc::Sender<Message>); +pub struct Sender(servo_channel::Sender<Message>); struct Connection { sender: ws::Sender, @@ -38,7 +37,7 @@ impl Handler for Connection { pub fn start_server(port: u16) -> Sender { debug!("Starting server."); - let (sender, receiver) = channel(); + let (sender, receiver) = servo_channel::channel(); thread::Builder::new() .name("debugger".to_owned()) .spawn(move || { @@ -51,7 +50,7 @@ pub fn start_server(port: u16) -> Sender { .spawn(move || { socket.listen(("127.0.0.1", port)).unwrap(); }).expect("Thread spawning failed"); - while let Ok(message) = receiver.recv() { + while let Some(message) = receiver.recv() { match message { Message::ShutdownServer => { break; |