use std::sync::Arc; use tracing::debug; use crate::state::{State, types::PeerId}; use super::{messages::{Message, MessageContent}, Peer}; pub fn handle(state: Arc, peer: &PeerId, message: Message) { debug!("Handling message now: {:?}", message); match message.content() { MessageContent::Hello { peer_name } => { state.set_peer(&Peer::new(peer.clone(), peer_name.clone())).expect("Couldn't set peer"); }, MessageContent::CreateElement { id, content } => { state.set_element(id, content).expect("State failed"); }, MessageContent::SetElement { id, content } => { state.set_element(id, content).expect("State failed"); }, MessageContent::RemoveElement { id } => { state.remove_element(id).expect("State failed"); } } }