devtools/actors/watcher/
network_parent.rs1use malloc_size_of_derive::MallocSizeOf;
6use serde_json::{Map, Value};
7
8use crate::actor::{Actor, ActorEncode, ActorError, ActorRegistry};
9use crate::protocol::ClientRequest;
10use crate::{ActorMsg, EmptyReplyMsg, StreamId};
11
12#[derive(MallocSizeOf)]
13pub(crate) struct NetworkParentActor {
14 name: String,
15}
16
17impl Actor for NetworkParentActor {
18 fn name(&self) -> String {
19 self.name.clone()
20 }
21
22 fn handle_message(
26 &self,
27 request: ClientRequest,
28 _registry: &ActorRegistry,
29 msg_type: &str,
30 _msg: &Map<String, Value>,
31 _id: StreamId,
32 ) -> Result<(), ActorError> {
33 match msg_type {
34 "setSaveRequestAndResponseBodies" => {
35 let msg = EmptyReplyMsg { from: self.name() };
36 request.reply_final(&msg)?
37 },
38 "setPersist" => {
39 let msg = EmptyReplyMsg { from: self.name() };
40 request.reply_final(&msg)?
41 },
42 _ => return Err(ActorError::UnrecognizedPacketType),
43 };
44 Ok(())
45 }
46}
47
48impl NetworkParentActor {
49 pub fn register(registry: &ActorRegistry) -> String {
50 let name = registry.new_name::<Self>();
51 let actor = Self { name: name.clone() };
52 registry.register::<Self>(actor);
53 name
54 }
55}
56
57impl ActorEncode<ActorMsg> for NetworkParentActor {
58 fn encode(&self, _: &ActorRegistry) -> ActorMsg {
59 ActorMsg { actor: self.name() }
60 }
61}