mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-22 23:58:12 +08:00
* Feat: implement the hierarchical tree for visualization * rename HierarchicalTree trait function * feat: change the HierarchicalTree from String to DebugMessageTree struct * Nits * feat: impliment proc macro to extract field from messagedata structs * update the hierarchical-tree for hanlder data * feat: added message handler struct to hierarchical tree * feat: add the line number to message handler struct * feat: added handler path to tree and NITS * clean the white spaces in type string * fixes some white spaces * feat: added path to message enum in hierarchical tree * feat: add file creation of hierarchical message system tree * cleanup * Code review * Add todo comment for deferred change --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
29 lines
906 B
Rust
29 lines
906 B
Rust
use crate::messages::prelude::*;
|
|
|
|
#[derive(Debug, Clone, Default, ExtractField)]
|
|
pub struct BroadcastMessageHandler {
|
|
listeners: HashMap<BroadcastEvent, Vec<Message>>,
|
|
}
|
|
|
|
#[message_handler_data]
|
|
impl MessageHandler<BroadcastMessage, ()> for BroadcastMessageHandler {
|
|
fn process_message(&mut self, message: BroadcastMessage, responses: &mut VecDeque<Message>, _data: ()) {
|
|
match message {
|
|
// Sub-messages
|
|
BroadcastMessage::TriggerEvent(event) => {
|
|
for message in self.listeners.entry(event).or_default() {
|
|
responses.add_front(message.clone())
|
|
}
|
|
}
|
|
|
|
// Messages
|
|
BroadcastMessage::SubscribeEvent { on, send } => self.listeners.entry(on).or_default().push(*send),
|
|
BroadcastMessage::UnsubscribeEvent { on, message } => self.listeners.entry(on).or_default().retain(|msg| *msg != *message),
|
|
}
|
|
}
|
|
|
|
fn actions(&self) -> ActionList {
|
|
actions!(BroadcastEventDiscriminant;)
|
|
}
|
|
}
|