mirror of
https://github.com/servo/servo.git
synced 2025-07-22 14:53:49 +01:00
devtools: Don't panic when sending to a disconnected client fails.
This commit is contained in:
parent
611c57bfdf
commit
0b619bf920
16 changed files with 107 additions and 85 deletions
|
@ -160,7 +160,7 @@ impl Actor for BrowsingContextActor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stream.write_json_packet(&ReconfigureReply { from: self.name() });
|
let _ = stream.write_json_packet(&ReconfigureReply { from: self.name() });
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ impl Actor for BrowsingContextActor {
|
||||||
title: self.title.borrow().clone(),
|
title: self.title.borrow().clone(),
|
||||||
}],
|
}],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -380,7 +380,7 @@ impl Actor for ConsoleActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
messages: messages,
|
messages: messages,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -396,7 +396,7 @@ impl Actor for ConsoleActor {
|
||||||
.collect(),
|
.collect(),
|
||||||
traits: StartedListenersTraits,
|
traits: StartedListenersTraits,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -413,7 +413,7 @@ impl Actor for ConsoleActor {
|
||||||
.map(|listener| listener.as_str().unwrap().to_owned())
|
.map(|listener| listener.as_str().unwrap().to_owned())
|
||||||
.collect(),
|
.collect(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -425,13 +425,13 @@ impl Actor for ConsoleActor {
|
||||||
matches: vec![],
|
matches: vec![],
|
||||||
matchProp: "".to_owned(),
|
matchProp: "".to_owned(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
"evaluateJS" => {
|
"evaluateJS" => {
|
||||||
let msg = self.evaluateJS(®istry, &msg);
|
let msg = self.evaluateJS(®istry, &msg);
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -443,7 +443,9 @@ impl Actor for ConsoleActor {
|
||||||
};
|
};
|
||||||
// Emit an eager reply so that the client starts listening
|
// Emit an eager reply so that the client starts listening
|
||||||
// for an async event with the resultID
|
// for an async event with the resultID
|
||||||
stream.write_json_packet(&early_reply);
|
if stream.write_json_packet(&early_reply).is_err() {
|
||||||
|
return Ok(ActorMessageStatus::Processed);
|
||||||
|
}
|
||||||
|
|
||||||
if msg.get("eager").and_then(|v| v.as_bool()).unwrap_or(false) {
|
if msg.get("eager").and_then(|v| v.as_bool()).unwrap_or(false) {
|
||||||
// We don't support the side-effect free evaluation that eager evalaution
|
// We don't support the side-effect free evaluation that eager evalaution
|
||||||
|
@ -464,7 +466,7 @@ impl Actor for ConsoleActor {
|
||||||
helperResult: reply.helperResult,
|
helperResult: reply.helperResult,
|
||||||
};
|
};
|
||||||
// Send the data from evaluateJS along with a resultID
|
// Send the data from evaluateJS along with a resultID
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -473,7 +475,7 @@ impl Actor for ConsoleActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
updated: vec![],
|
updated: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ impl Actor for DeviceActor {
|
||||||
platformVersion: "71.0".to_string(),
|
platformVersion: "71.0".to_string(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -72,13 +72,13 @@ impl Actor for HighlighterActor {
|
||||||
Ok(match msg_type {
|
Ok(match msg_type {
|
||||||
"showBoxModel" => {
|
"showBoxModel" => {
|
||||||
let msg = ShowBoxModelReply { from: self.name() };
|
let msg = ShowBoxModelReply { from: self.name() };
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
"hideBoxModel" => {
|
"hideBoxModel" => {
|
||||||
let msg = HideBoxModelReply { from: self.name() };
|
let msg = HideBoxModelReply { from: self.name() };
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ impl Actor for NodeActor {
|
||||||
))
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let reply = ModifyAttributeReply { from: self.name() };
|
let reply = ModifyAttributeReply { from: self.name() };
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@ impl Actor for WalkerActor {
|
||||||
Ok(match msg_type {
|
Ok(match msg_type {
|
||||||
"querySelector" => {
|
"querySelector" => {
|
||||||
let msg = QuerySelectorReply { from: self.name() };
|
let msg = QuerySelectorReply { from: self.name() };
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -310,13 +310,13 @@ impl Actor for WalkerActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
node: node,
|
node: node,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
"clearPseudoClassLocks" => {
|
"clearPseudoClassLocks" => {
|
||||||
let msg = ClearPseudoclassesReply { from: self.name() };
|
let msg = ClearPseudoclassesReply { from: self.name() };
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ impl Actor for WalkerActor {
|
||||||
.collect(),
|
.collect(),
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -481,7 +481,7 @@ impl Actor for PageStyleActor {
|
||||||
sheets: vec![],
|
sheets: vec![],
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -491,7 +491,7 @@ impl Actor for PageStyleActor {
|
||||||
computed: vec![],
|
computed: vec![],
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -576,7 +576,7 @@ impl Actor for PageStyleActor {
|
||||||
};
|
};
|
||||||
let msg = serde_json::to_string(&msg).unwrap();
|
let msg = serde_json::to_string(&msg).unwrap();
|
||||||
let msg = serde_json::from_str::<Value>(&msg).unwrap();
|
let msg = serde_json::from_str::<Value>(&msg).unwrap();
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -625,7 +625,7 @@ impl Actor for InspectorActor {
|
||||||
root: node,
|
root: node,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -647,7 +647,7 @@ impl Actor for InspectorActor {
|
||||||
actor: self.pageStyle.borrow().clone().unwrap(),
|
actor: self.pageStyle.borrow().clone().unwrap(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -670,7 +670,7 @@ impl Actor for InspectorActor {
|
||||||
actor: self.highlighter.borrow().clone().unwrap(),
|
actor: self.highlighter.borrow().clone().unwrap(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -201,7 +201,7 @@ impl Actor for NetworkEventActor {
|
||||||
headerSize: headersSize,
|
headerSize: headersSize,
|
||||||
rawHeaders: rawHeadersString,
|
rawHeaders: rawHeadersString,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getRequestCookies" => {
|
"getRequestCookies" => {
|
||||||
|
@ -217,7 +217,7 @@ impl Actor for NetworkEventActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
cookies: cookies,
|
cookies: cookies,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getRequestPostData" => {
|
"getRequestPostData" => {
|
||||||
|
@ -226,7 +226,7 @@ impl Actor for NetworkEventActor {
|
||||||
postData: self.request.body.clone(),
|
postData: self.request.body.clone(),
|
||||||
postDataDiscarded: false,
|
postDataDiscarded: false,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getResponseHeaders" => {
|
"getResponseHeaders" => {
|
||||||
|
@ -251,7 +251,7 @@ impl Actor for NetworkEventActor {
|
||||||
headerSize: headersSize,
|
headerSize: headersSize,
|
||||||
rawHeaders: rawHeadersString,
|
rawHeaders: rawHeadersString,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
}
|
}
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
@ -268,7 +268,7 @@ impl Actor for NetworkEventActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
cookies: cookies,
|
cookies: cookies,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getResponseContent" => {
|
"getResponseContent" => {
|
||||||
|
@ -277,7 +277,7 @@ impl Actor for NetworkEventActor {
|
||||||
content: self.response.body.clone(),
|
content: self.response.body.clone(),
|
||||||
contentDiscarded: self.response.body.is_none(),
|
contentDiscarded: self.response.body.is_none(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getEventTimings" => {
|
"getEventTimings" => {
|
||||||
|
@ -297,7 +297,7 @@ impl Actor for NetworkEventActor {
|
||||||
timings: timingsObj,
|
timings: timingsObj,
|
||||||
totalTime: total,
|
totalTime: total,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"getSecurityInfo" => {
|
"getSecurityInfo" => {
|
||||||
|
@ -308,7 +308,7 @@ impl Actor for NetworkEventActor {
|
||||||
state: "insecure".to_owned(),
|
state: "insecure".to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
_ => ActorMessageStatus::Ignored,
|
_ => ActorMessageStatus::Ignored,
|
||||||
|
|
|
@ -72,7 +72,7 @@ impl Actor for PerformanceActor {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
"canCurrentlyRecord" => {
|
"canCurrentlyRecord" => {
|
||||||
|
@ -83,7 +83,7 @@ impl Actor for PerformanceActor {
|
||||||
errors: vec![],
|
errors: vec![],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
_ => ActorMessageStatus::Ignored,
|
_ => ActorMessageStatus::Ignored,
|
||||||
|
|
|
@ -35,7 +35,7 @@ impl Actor for PreferenceActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
value: false,
|
value: false,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ impl Actor for PreferenceActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
value: "".to_owned(),
|
value: "".to_owned(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ impl Actor for PreferenceActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
value: 0,
|
value: 0,
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ impl Actor for ProcessActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
workers: vec![],
|
workers: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@ impl Actor for RootActor {
|
||||||
from: "root".to_owned(),
|
from: "root".to_owned(),
|
||||||
addons: vec![],
|
addons: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&actor);
|
let _ = stream.write_json_packet(&actor);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ impl Actor for RootActor {
|
||||||
isParent: true,
|
isParent: true,
|
||||||
}],
|
}],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ impl Actor for RootActor {
|
||||||
isParent: true,
|
isParent: true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ impl Actor for RootActor {
|
||||||
deviceActor: self.device.clone(),
|
deviceActor: self.device.clone(),
|
||||||
preferenceActor: self.preference.clone(),
|
preferenceActor: self.preference.clone(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&actor);
|
let _ = stream.write_json_packet(&actor);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ impl Actor for RootActor {
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&actor);
|
let _ = stream.write_json_packet(&actor);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ impl Actor for RootActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
registrations: vec![],
|
registrations: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ impl Actor for RootActor {
|
||||||
.map(|name| registry.find::<WorkerActor>(name).encodable())
|
.map(|name| registry.find::<WorkerActor>(name).encodable())
|
||||||
.collect(),
|
.collect(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ impl Actor for RootActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
tab: tab.encodable(®istry),
|
tab: tab.encodable(®istry),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&reply);
|
let _ = stream.write_json_packet(&reply);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ impl Actor for RootActor {
|
||||||
device: DeviceActor::description(),
|
device: DeviceActor::description(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ impl Actor for StyleSheetsActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
styleSheets: vec![],
|
styleSheets: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ impl Actor for TabDescriptorActor {
|
||||||
let frame = registry
|
let frame = registry
|
||||||
.find::<BrowsingContextActor>(&self.browsing_context_actor)
|
.find::<BrowsingContextActor>(&self.browsing_context_actor)
|
||||||
.encodable();
|
.encodable();
|
||||||
stream.write_json_packet(&GetTargetReply {
|
let _ = stream.write_json_packet(&GetTargetReply {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
frame,
|
frame,
|
||||||
});
|
});
|
||||||
|
|
|
@ -100,8 +100,8 @@ impl Actor for ThreadActor {
|
||||||
type_: "attached".to_owned(),
|
type_: "attached".to_owned(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
stream.write_json_packet(&VoidAttachedReply { from: self.name() });
|
let _ = stream.write_json_packet(&VoidAttachedReply { from: self.name() });
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -110,8 +110,8 @@ impl Actor for ThreadActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
type_: "resumed".to_owned(),
|
type_: "resumed".to_owned(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
stream.write_json_packet(&VoidAttachedReply { from: self.name() });
|
let _ = stream.write_json_packet(&VoidAttachedReply { from: self.name() });
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -120,12 +120,12 @@ impl Actor for ThreadActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
type_: "interrupted".to_owned(),
|
type_: "interrupted".to_owned(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
"reconfigure" => {
|
"reconfigure" => {
|
||||||
stream.write_json_packet(&ReconfigureReply { from: self.name() });
|
let _ = stream.write_json_packet(&ReconfigureReply { from: self.name() });
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ impl Actor for ThreadActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
sources: vec![],
|
sources: vec![],
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ use msg::constellation_msg::PipelineId;
|
||||||
use serde::{Serialize, Serializer};
|
use serde::{Serialize, Serializer};
|
||||||
use serde_json::{Map, Value};
|
use serde_json::{Map, Value};
|
||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
use std::error::Error;
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
@ -166,7 +167,9 @@ impl TimelineActor {
|
||||||
while let Ok(Some(marker)) = receiver.try_recv() {
|
while let Ok(Some(marker)) = receiver.try_recv() {
|
||||||
markers.push(emitter.marker(marker));
|
markers.push(emitter.marker(marker));
|
||||||
}
|
}
|
||||||
emitter.send(markers);
|
if emitter.send(markers).is_err() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
thread::sleep(Duration::from_millis(DEFAULT_TIMELINE_DATA_PULL_TIMEOUT));
|
thread::sleep(Duration::from_millis(DEFAULT_TIMELINE_DATA_PULL_TIMEOUT));
|
||||||
})
|
})
|
||||||
|
@ -235,7 +238,7 @@ impl Actor for TimelineActor {
|
||||||
from: self.name(),
|
from: self.name(),
|
||||||
value: HighResolutionStamp::new(registry.start_stamp(), PreciseTime::now()),
|
value: HighResolutionStamp::new(registry.start_stamp(), PreciseTime::now()),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -245,7 +248,7 @@ impl Actor for TimelineActor {
|
||||||
value: HighResolutionStamp::new(registry.start_stamp(), PreciseTime::now()),
|
value: HighResolutionStamp::new(registry.start_stamp(), PreciseTime::now()),
|
||||||
};
|
};
|
||||||
|
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
self.script_sender
|
self.script_sender
|
||||||
.send(DropTimelineMarkers(
|
.send(DropTimelineMarkers(
|
||||||
self.pipeline,
|
self.pipeline,
|
||||||
|
@ -272,7 +275,7 @@ impl Actor for TimelineActor {
|
||||||
value: self.is_recording.lock().unwrap().clone(),
|
value: self.is_recording.lock().unwrap().clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -311,7 +314,7 @@ impl Emitter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send(&mut self, markers: Vec<TimelineMarkerReply>) {
|
fn send(&mut self, markers: Vec<TimelineMarkerReply>) -> Result<(), Box<dyn Error>> {
|
||||||
let end_time = PreciseTime::now();
|
let end_time = PreciseTime::now();
|
||||||
let reply = MarkersEmitterReply {
|
let reply = MarkersEmitterReply {
|
||||||
type_: "markers".to_owned(),
|
type_: "markers".to_owned(),
|
||||||
|
@ -319,7 +322,7 @@ impl Emitter {
|
||||||
from: self.from.clone(),
|
from: self.from.clone(),
|
||||||
endTime: HighResolutionStamp::new(self.start_stamp, end_time),
|
endTime: HighResolutionStamp::new(self.start_stamp, end_time),
|
||||||
};
|
};
|
||||||
self.stream.write_json_packet(&reply);
|
self.stream.write_json_packet(&reply)?;
|
||||||
|
|
||||||
if let Some(ref actor_name) = self.framerate_actor {
|
if let Some(ref actor_name) = self.framerate_actor {
|
||||||
let mut lock = self.registry.lock();
|
let mut lock = self.registry.lock();
|
||||||
|
@ -331,7 +334,7 @@ impl Emitter {
|
||||||
delta: HighResolutionStamp::new(self.start_stamp, end_time),
|
delta: HighResolutionStamp::new(self.start_stamp, end_time),
|
||||||
timestamps: framerate_actor.take_pending_ticks(),
|
timestamps: framerate_actor.take_pending_ticks(),
|
||||||
};
|
};
|
||||||
self.stream.write_json_packet(&framerateReply);
|
self.stream.write_json_packet(&framerateReply)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref actor_name) = self.memory_actor {
|
if let Some(ref actor_name) = self.memory_actor {
|
||||||
|
@ -343,7 +346,9 @@ impl Emitter {
|
||||||
delta: HighResolutionStamp::new(self.start_stamp, end_time),
|
delta: HighResolutionStamp::new(self.start_stamp, end_time),
|
||||||
measurement: memory_actor.measure(),
|
measurement: memory_actor.measure(),
|
||||||
};
|
};
|
||||||
self.stream.write_json_packet(&memoryReply);
|
self.stream.write_json_packet(&memoryReply)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,7 +82,7 @@ impl Actor for WorkerActor {
|
||||||
threadActor: self.thread.clone(),
|
threadActor: self.thread.clone(),
|
||||||
consoleActor: self.console.clone(),
|
consoleActor: self.console.clone(),
|
||||||
};
|
};
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
ActorMessageStatus::Processed
|
ActorMessageStatus::Processed
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,10 @@ fn run_server(
|
||||||
{
|
{
|
||||||
let actors = actors.lock().unwrap();
|
let actors = actors.lock().unwrap();
|
||||||
let msg = actors.find::<RootActor>("root").encodable();
|
let msg = actors.find::<RootActor>("root").encodable();
|
||||||
stream.write_json_packet(&msg);
|
if let Err(e) = stream.write_json_packet(&msg) {
|
||||||
|
warn!("Error writing response: {:?}", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
'outer: loop {
|
'outer: loop {
|
||||||
|
@ -451,7 +454,7 @@ fn run_server(
|
||||||
eventActor: actor.event_actor(),
|
eventActor: actor.event_actor(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
NetworkEvent::HttpResponse(httpresponse) => {
|
NetworkEvent::HttpResponse(httpresponse) => {
|
||||||
|
@ -464,7 +467,7 @@ fn run_server(
|
||||||
updateType: "requestHeaders".to_owned(),
|
updateType: "requestHeaders".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &actor.request_headers());
|
let _ = stream.write_merged_json_packet(&msg, &actor.request_headers());
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
|
@ -473,7 +476,7 @@ fn run_server(
|
||||||
updateType: "requestCookies".to_owned(),
|
updateType: "requestCookies".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &actor.request_cookies());
|
let _ = stream.write_merged_json_packet(&msg, &actor.request_cookies());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Send a networkEventUpdate (responseStart) to the client
|
//Send a networkEventUpdate (responseStart) to the client
|
||||||
|
@ -485,7 +488,7 @@ fn run_server(
|
||||||
};
|
};
|
||||||
|
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_json_packet(&msg);
|
let _ = stream.write_json_packet(&msg);
|
||||||
}
|
}
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
from: netevent_actor_name.clone(),
|
from: netevent_actor_name.clone(),
|
||||||
|
@ -496,7 +499,7 @@ fn run_server(
|
||||||
totalTime: actor.total_time(),
|
totalTime: actor.total_time(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &extra);
|
let _ = stream.write_merged_json_packet(&msg, &extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
|
@ -508,7 +511,7 @@ fn run_server(
|
||||||
state: "insecure".to_owned(),
|
state: "insecure".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &extra);
|
let _ = stream.write_merged_json_packet(&msg, &extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
|
@ -517,7 +520,7 @@ fn run_server(
|
||||||
updateType: "responseContent".to_owned(),
|
updateType: "responseContent".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &actor.response_content());
|
let _ = stream.write_merged_json_packet(&msg, &actor.response_content());
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
|
@ -526,7 +529,7 @@ fn run_server(
|
||||||
updateType: "responseCookies".to_owned(),
|
updateType: "responseCookies".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &actor.response_cookies());
|
let _ = stream.write_merged_json_packet(&msg, &actor.response_cookies());
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = NetworkEventUpdateMsg {
|
let msg = NetworkEventUpdateMsg {
|
||||||
|
@ -535,7 +538,7 @@ fn run_server(
|
||||||
updateType: "responseHeaders".to_owned(),
|
updateType: "responseHeaders".to_owned(),
|
||||||
};
|
};
|
||||||
for stream in &mut connections {
|
for stream in &mut connections {
|
||||||
stream.write_merged_json_packet(&msg, &actor.response_headers());
|
let _ = stream.write_merged_json_packet(&msg, &actor.response_headers());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use serde_json::{self, Value};
|
use serde_json::{self, Value};
|
||||||
|
use std::error::Error;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
|
|
||||||
|
@ -26,29 +27,38 @@ pub struct Method {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait JsonPacketStream {
|
pub trait JsonPacketStream {
|
||||||
fn write_json_packet<T: Serialize>(&mut self, obj: &T);
|
fn write_json_packet<T: Serialize>(&mut self, obj: &T) -> Result<(), Box<dyn Error>>;
|
||||||
fn write_merged_json_packet<T: Serialize, U: Serialize>(&mut self, base: &T, extra: &U);
|
fn write_merged_json_packet<T: Serialize, U: Serialize>(
|
||||||
|
&mut self,
|
||||||
|
base: &T,
|
||||||
|
extra: &U,
|
||||||
|
) -> Result<(), Box<dyn Error>>;
|
||||||
fn read_json_packet(&mut self) -> Result<Option<Value>, String>;
|
fn read_json_packet(&mut self) -> Result<Option<Value>, String>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl JsonPacketStream for TcpStream {
|
impl JsonPacketStream for TcpStream {
|
||||||
fn write_json_packet<T: Serialize>(&mut self, obj: &T) {
|
fn write_json_packet<T: Serialize>(&mut self, obj: &T) -> Result<(), Box<dyn Error>> {
|
||||||
let s = serde_json::to_string(obj).unwrap();
|
let s = serde_json::to_string(obj)?;
|
||||||
debug!("<- {}", s);
|
debug!("<- {}", s);
|
||||||
write!(self, "{}:{}", s.len(), s).unwrap();
|
write!(self, "{}:{}", s.len(), s)?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn write_merged_json_packet<T: Serialize, U: Serialize>(&mut self, base: &T, extra: &U) {
|
fn write_merged_json_packet<T: Serialize, U: Serialize>(
|
||||||
let mut obj = serde_json::to_value(base).unwrap();
|
&mut self,
|
||||||
|
base: &T,
|
||||||
|
extra: &U,
|
||||||
|
) -> Result<(), Box<dyn Error>> {
|
||||||
|
let mut obj = serde_json::to_value(base)?;
|
||||||
let obj = obj.as_object_mut().unwrap();
|
let obj = obj.as_object_mut().unwrap();
|
||||||
let extra = serde_json::to_value(extra).unwrap();
|
let extra = serde_json::to_value(extra)?;
|
||||||
let extra = extra.as_object().unwrap();
|
let extra = extra.as_object().unwrap();
|
||||||
|
|
||||||
for (key, value) in extra {
|
for (key, value) in extra {
|
||||||
obj.insert(key.to_owned(), value.to_owned());
|
obj.insert(key.to_owned(), value.to_owned());
|
||||||
}
|
}
|
||||||
|
|
||||||
self.write_json_packet(obj);
|
self.write_json_packet(obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_json_packet(&mut self) -> Result<Option<Value>, String> {
|
fn read_json_packet(&mut self) -> Result<Option<Value>, String> {
|
||||||
|
@ -74,7 +84,9 @@ impl JsonPacketStream for TcpStream {
|
||||||
Err(_) => return Err("packet length missing / not parsable".to_owned()),
|
Err(_) => return Err("packet length missing / not parsable".to_owned()),
|
||||||
};
|
};
|
||||||
let mut packet = String::new();
|
let mut packet = String::new();
|
||||||
self.take(packet_len).read_to_string(&mut packet).unwrap();
|
self.take(packet_len)
|
||||||
|
.read_to_string(&mut packet)
|
||||||
|
.map_err(|e| e.to_string())?;
|
||||||
debug!("{}", packet);
|
debug!("{}", packet);
|
||||||
return match serde_json::from_str(&packet) {
|
return match serde_json::from_str(&packet) {
|
||||||
Ok(json) => Ok(Some(json)),
|
Ok(json) => Ok(Some(json)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue