aboutsummaryrefslogtreecommitdiffstats
path: root/components/devtools/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/devtools/lib.rs')
-rw-r--r--components/devtools/lib.rs27
1 files changed, 15 insertions, 12 deletions
diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs
index fd4b57aa0d6..f653dd289ce 100644
--- a/components/devtools/lib.rs
+++ b/components/devtools/lib.rs
@@ -10,17 +10,19 @@
#![crate_name = "devtools"]
#![crate_type = "rlib"]
+#![feature(int_uint, box_syntax)]
+
#![allow(non_snake_case)]
#![allow(missing_copy_implementations)]
+#![allow(unstable)]
-#![feature(phase)]
-
-#[phase(plugin, link)]
+#[macro_use]
extern crate log;
extern crate collections;
extern crate core;
extern crate devtools_traits;
+extern crate "serialize" as rustc_serialize;
extern crate serialize;
extern crate "msg" as servo_msg;
extern crate "util" as servo_util;
@@ -39,8 +41,8 @@ use servo_util::task::spawn_named;
use std::borrow::ToOwned;
use std::cell::RefCell;
use std::collections::HashMap;
-use std::comm;
-use std::comm::{Disconnected, Empty};
+use std::sync::mpsc::{channel, Receiver, Sender};
+use std::sync::mpsc::TryRecvError::{Disconnected, Empty};
use std::io::{TcpListener, TcpStream};
use std::io::{Acceptor, Listener, TimedOut};
use std::sync::{Arc, Mutex};
@@ -57,8 +59,8 @@ mod protocol;
/// Spin up a devtools server that listens for connections on the specified port.
pub fn start_server(port: u16) -> Sender<DevtoolsControlMsg> {
- let (sender, receiver) = comm::channel();
- spawn_named("Devtools".to_owned(), proc() {
+ let (sender, receiver) = channel();
+ spawn_named("Devtools".to_owned(), move || {
run_server(receiver, port)
});
sender
@@ -92,7 +94,7 @@ fn run_server(receiver: Receiver<DevtoolsControlMsg>, port: u16) {
fn handle_client(actors: Arc<Mutex<ActorRegistry>>, mut stream: TcpStream) {
println!("connection established to {}", stream.peer_name().unwrap());
{
- let actors = actors.lock();
+ let actors = actors.lock().unwrap();
let msg = actors.find::<RootActor>("root").encodable();
stream.write_json_packet(&msg);
}
@@ -100,8 +102,9 @@ fn run_server(receiver: Receiver<DevtoolsControlMsg>, port: u16) {
'outer: loop {
match stream.read_json_packet() {
Ok(json_packet) => {
- match actors.lock().handle_message(json_packet.as_object().unwrap(),
- &mut stream) {
+ let mut actors = actors.lock().unwrap();
+ match actors.handle_message(json_packet.as_object().unwrap(),
+ &mut stream) {
Ok(()) => {},
Err(()) => {
println!("error: devtools actor stopped responding");
@@ -127,7 +130,7 @@ fn run_server(receiver: Receiver<DevtoolsControlMsg>, port: u16) {
sender: Sender<DevtoolScriptControlMsg>,
actor_pipelines: &mut HashMap<PipelineId, String>,
page_info: DevtoolsPageInfo) {
- let mut actors = actors.lock();
+ let mut actors = actors.lock().unwrap();
//TODO: move all this actor creation into a constructor method on TabActor
let (tab, console, inspector) = {
@@ -185,7 +188,7 @@ fn run_server(receiver: Receiver<DevtoolsControlMsg>, port: u16) {
Ok(stream) => {
let actors = actors.clone();
accepted_connections.push(stream.clone());
- spawn_named("DevtoolsClientHandler".to_owned(), proc() {
+ spawn_named("DevtoolsClientHandler".to_owned(), move || {
// connection succeeded
handle_client(actors, stream.clone())
})