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