use serde::{Deserialize, Serialize}; use crate::state::types::{ElementContent, ElementId, MessageId}; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Message { id: MessageId, signature: MessageSignature, content: MessageContent, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum MessageContent { Hello { peer_name: String, }, CreateElement { id: ElementId, content: ElementContent, }, SetElement { id: ElementId, content: ElementContent, }, RemoveElement { id: ElementId, }, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct MessageSignature {} impl Message { pub fn new(content: MessageContent) -> Self { Message { id: MessageId::new(), signature: MessageSignature {}, content: content, } } pub fn content(&self) -> &MessageContent { &self.content } pub fn id(&self) -> &MessageId { &self.id } } impl MessageSignature { pub fn verify(&self, _content: &MessageContent) -> bool { true } }