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