59 lines
1.1 KiB
Rust
59 lines
1.1 KiB
Rust
|
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
|
||
|
}
|
||
|
}
|