use serde::{Serialize, Deserialize}; use crate::state::types::{MessageId, ElementId, ElementContent}; #[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 } }