devtools/actors/inspector/
layout.rs1use std::sync::Arc;
9
10use malloc_size_of_derive::MallocSizeOf;
11use serde::Serialize;
12use serde_json::{Map, Value};
13
14use crate::actor::{Actor, ActorEncode, ActorError, ActorRegistry, new_actor_name};
15use crate::protocol::ClientRequest;
16use crate::{ActorMsg, StreamId};
17
18#[derive(MallocSizeOf)]
19pub(crate) struct LayoutInspectorActor {
20 name: String,
21}
22
23#[derive(Serialize)]
24pub(crate) struct GetGridsReply {
25 from: String,
26 grids: Vec<String>,
27}
28
29#[derive(Serialize)]
30pub(crate) struct GetCurrentFlexboxReply {
31 from: String,
32 flexbox: Option<()>,
33}
34
35impl Actor for LayoutInspectorActor {
36 fn name(&self) -> &str {
37 &self.name
38 }
39
40 fn handle_message(
46 &self,
47 request: ClientRequest,
48 _registry: &ActorRegistry,
49 msg_type: &str,
50 _msg: &Map<String, Value>,
51 _id: StreamId,
52 ) -> Result<(), ActorError> {
53 match msg_type {
54 "getGrids" => {
55 let msg = GetGridsReply {
56 from: self.name().into(),
57 grids: vec![],
59 };
60 request.reply_final(&msg)?
61 },
62 "getCurrentFlexbox" => {
63 let msg = GetCurrentFlexboxReply {
64 from: self.name().into(),
65 flexbox: None,
67 };
68 request.reply_final(&msg)?
69 },
70 _ => return Err(ActorError::UnrecognizedPacketType),
71 };
72 Ok(())
73 }
74}
75
76impl LayoutInspectorActor {
77 pub fn register(registry: &ActorRegistry) -> Arc<Self> {
78 let name = new_actor_name::<Self>();
79 let actor = Self { name };
80 registry.register::<Self>(actor)
81 }
82}
83
84impl ActorEncode<ActorMsg> for LayoutInspectorActor {
85 fn encode(&self, _: &ActorRegistry) -> ActorMsg {
86 ActorMsg {
87 actor: self.name().into(),
88 }
89 }
90}