ubisync/src/comm/message_processor.rs
2023-12-07 19:51:19 +01:00

27 lines
No EOL
853 B
Rust

use std::sync::Arc;
use tracing::debug;
use crate::state::{State, types::PeerId};
use super::{messages::{Message, MessageContent}, Peer};
pub fn handle(state: Arc<State>, 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");
}
}
}