Respond to the connect message from a devtools client (#35745)

* Respond to the "connect" message

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Bump log levels in devtools implementation a bit

If everything is "debug" then nothing stands out.

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2025-03-02 13:16:51 +01:00 committed by GitHub
parent aa26aa1963
commit e7e8ccea20
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 12 deletions

View file

@ -10,7 +10,7 @@ use std::net::TcpStream;
use std::sync::{Arc, Mutex};
use base::cross_process_instant::CrossProcessInstant;
use log::{debug, warn};
use log::debug;
use serde_json::{Map, Value};
/// General actor system infrastructure.
@ -175,21 +175,22 @@ impl ActorRegistry {
let to = match msg.get("to") {
Some(to) => to.as_str().unwrap(),
None => {
warn!("Received unexpected message: {:?}", msg);
log::warn!("Received unexpected message: {:?}", msg);
return Err(());
},
};
match self.actors.get(to) {
None => debug!("message received for unknown actor \"{}\"", to),
None => log::warn!("message received for unknown actor \"{}\"", to),
Some(actor) => {
let msg_type = msg.get("type").unwrap().as_str().unwrap();
if actor.handle_message(self, msg_type, msg, stream, id)? !=
ActorMessageStatus::Processed
{
debug!(
log::warn!(
"unexpected message type \"{}\" found for actor \"{}\"",
msg_type, to
msg_type,
to
);
}
},

View file

@ -12,7 +12,7 @@
use std::net::TcpStream;
use serde::Serialize;
use serde_json::{Map, Value};
use serde_json::{json, Map, Value};
use crate::actor::{Actor, ActorMessageStatus, ActorRegistry};
use crate::actors::device::DeviceActor;
@ -145,6 +145,13 @@ impl Actor for RootActor {
_id: StreamId,
) -> Result<ActorMessageStatus, ()> {
Ok(match msg_type {
"connect" => {
let message = json!({
"from": "root",
});
let _ = stream.write_json_packet(&message);
ActorMessageStatus::Processed
},
"listAddons" => {
let actor = ListAddonsReply {
from: "root".to_owned(),

View file

@ -28,7 +28,7 @@ use devtools_traits::{
};
use embedder_traits::{AllowOrDeny, EmbedderMsg, EmbedderProxy};
use ipc_channel::ipc::{self, IpcSender};
use log::{debug, trace, warn};
use log::trace;
use serde::Serialize;
use servo_rand::RngCore;
@ -650,10 +650,10 @@ fn allow_devtools_client(stream: &mut TcpStream, embedder: &EmbedderProxy, token
/// Process the input from a single devtools client until EOF.
fn handle_client(actors: Arc<Mutex<ActorRegistry>>, mut stream: TcpStream, id: StreamId) {
debug!("connection established to {}", stream.peer_addr().unwrap());
log::info!("Connection established to {}", stream.peer_addr().unwrap());
let msg = actors.lock().unwrap().find::<RootActor>("root").encodable();
if let Err(e) = stream.write_json_packet(&msg) {
warn!("Error writing response: {:?}", e);
log::warn!("Error writing response: {:?}", e);
return;
}
@ -665,17 +665,17 @@ fn handle_client(actors: Arc<Mutex<ActorRegistry>>, mut stream: TcpStream, id: S
&mut stream,
id,
) {
debug!("error: devtools actor stopped responding");
log::error!("Devtools actor stopped responding");
let _ = stream.shutdown(Shutdown::Both);
break;
}
},
Ok(None) => {
debug!("error: EOF");
log::info!("Devtools connection closed");
break;
},
Err(err_msg) => {
debug!("error: {}", err_msg);
log::error!("Failed to read message from devtools client: {}", err_msg);
break;
},
}