Auto merge of #16116 - nox:tungstenite, r=Wafflespeanut

Remove some useless thread spawning in websocket_loader

<!-- 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/16116)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-03-24 04:48:07 -07:00 committed by GitHub
commit 3f10d510bd
4 changed files with 18 additions and 27 deletions

1
Cargo.lock generated
View file

@ -1755,7 +1755,6 @@ dependencies = [
"parse-hosts 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "parse-hosts 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-websocket 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)",
"servo_config 0.0.1", "servo_config 0.0.1",
"servo_url 0.0.1", "servo_url 0.0.1",
"url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",

View file

@ -161,29 +161,24 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData, c
} }
}); });
let initiated_close_outgoing = initiated_close.clone(); while let Ok(dom_action) = connect.action_receiver.recv() {
let ws_sender_outgoing = ws_sender.clone(); match dom_action {
let resource_action_receiver = connect.action_receiver; WebSocketDomAction::SendMessage(MessageData::Text(data)) => {
thread::spawn(move || { ws_sender.lock().unwrap().send_message(&Message::text(data)).unwrap();
while let Ok(dom_action) = resource_action_receiver.recv() { },
match dom_action { WebSocketDomAction::SendMessage(MessageData::Binary(data)) => {
WebSocketDomAction::SendMessage(MessageData::Text(data)) => { ws_sender.lock().unwrap().send_message(&Message::binary(data)).unwrap();
ws_sender_outgoing.lock().unwrap().send_message(&Message::text(data)).unwrap(); },
}, WebSocketDomAction::Close(code, reason) => {
WebSocketDomAction::SendMessage(MessageData::Binary(data)) => { if !initiated_close.fetch_or(true, Ordering::SeqCst) {
ws_sender_outgoing.lock().unwrap().send_message(&Message::binary(data)).unwrap(); let message = match code {
}, Some(code) => Message::close_because(code, reason.unwrap_or("".to_owned())),
WebSocketDomAction::Close(code, reason) => { None => Message::close()
if !initiated_close_outgoing.fetch_or(true, Ordering::SeqCst) { };
let message = match code { ws_sender.lock().unwrap().send_message(&message).unwrap();
Some(code) => Message::close_because(code, reason.unwrap_or("".to_owned())), }
None => Message::close() },
};
ws_sender_outgoing.lock().unwrap().send_message(&message).unwrap();
}
},
}
} }
}); }
}).expect("Thread spawning failed"); }).expect("Thread spawning failed");
} }

View file

@ -26,7 +26,6 @@ serde = "0.9"
serde_derive = "0.9" serde_derive = "0.9"
servo_config = {path = "../config", features = ["servo"]} servo_config = {path = "../config", features = ["servo"]}
servo_url = {path = "../url", features = ["servo"]} servo_url = {path = "../url", features = ["servo"]}
servo-websocket = "0.18"
url = {version = "1.2", features = ["heap_size"]} url = {version = "1.2", features = ["heap_size"]}
uuid = {version = "0.4", features = ["v4", "serde"]} uuid = {version = "0.4", features = ["v4", "serde"]}
webrender_traits = {git = "https://github.com/servo/webrender", features = ["ipc"]} webrender_traits = {git = "https://github.com/servo/webrender", features = ["ipc"]}

View file

@ -31,7 +31,6 @@ extern crate servo_url;
extern crate url; extern crate url;
extern crate uuid; extern crate uuid;
extern crate webrender_traits; extern crate webrender_traits;
extern crate websocket;
use cookie_rs::Cookie; use cookie_rs::Cookie;
use filemanager_thread::FileManagerThreadMsg; use filemanager_thread::FileManagerThreadMsg;
@ -47,7 +46,6 @@ use request::{Request, RequestInit};
use response::{HttpsState, Response}; use response::{HttpsState, Response};
use servo_url::ServoUrl; use servo_url::ServoUrl;
use storage_thread::StorageThreadMsg; use storage_thread::StorageThreadMsg;
use websocket::header;
pub mod blob_url_store; pub mod blob_url_store;
pub mod filemanager_thread; pub mod filemanager_thread;