27 lines
853 B
Rust
27 lines
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");
|
||
|
}
|
||
|
}
|
||
|
}
|