agentmux_srv/backend/wcore/
event.rs1#![allow(dead_code)]
2use crate::backend::oref::ORef;
8use crate::backend::storage::store::Store;
9use crate::backend::obj::*;
10use crate::backend::mps::Broker;
11
12pub fn send_mux_obj_update(broker: &Broker, store: &Store, oref: &ORef) {
14 let obj_json = match oref.otype.as_str() {
15 OTYPE_CLIENT => store
16 .get::<Client>(&oref.oid)
17 .ok()
18 .flatten()
19 .and_then(|o| serde_json::to_value(&o).ok()),
20 OTYPE_WINDOW => store
21 .get::<Window>(&oref.oid)
22 .ok()
23 .flatten()
24 .and_then(|o| serde_json::to_value(&o).ok()),
25 OTYPE_WORKSPACE => store
26 .get::<Workspace>(&oref.oid)
27 .ok()
28 .flatten()
29 .and_then(|o| serde_json::to_value(&o).ok()),
30 OTYPE_TAB => store
31 .get::<Tab>(&oref.oid)
32 .ok()
33 .flatten()
34 .and_then(|o| serde_json::to_value(&o).ok()),
35 OTYPE_LAYOUT => store
36 .get::<LayoutState>(&oref.oid)
37 .ok()
38 .flatten()
39 .and_then(|o| serde_json::to_value(&o).ok()),
40 OTYPE_BLOCK => store
41 .get::<Block>(&oref.oid)
42 .ok()
43 .flatten()
44 .and_then(|o| serde_json::to_value(&o).ok()),
45 _ => None,
46 };
47
48 if let Some(obj) = obj_json {
49 let update = crate::backend::obj::MuxObjUpdate {
50 updatetype: UPDATE_TYPE_UPDATE.to_string(),
51 otype: oref.otype.to_string(),
52 oid: oref.oid.to_string(),
53 obj: Some(obj),
54 };
55 broker.publish_event::<crate::backend::mps_events::MuxObjUpdated>(&update, vec![oref.to_string()], 0);
56 }
57}