use std::fmt::Debug;
use serde::{Serialize, Deserialize};
use crate::peer::Peer;
use crate::message::{self, Message, MESSAGE_PROTOCOL_SAMPLING_MESSAGE};
#[derive(Debug, Serialize, Deserialize)]
pub struct PeerSamplingMessage {
sender: String,
message_type: message::MessageType,
view: Option<Vec<Peer>>,
}
impl PeerSamplingMessage {
pub fn new_request(sender: String, view: Option<Vec<Peer>>) -> Self {
Self::new(sender, message::MessageType::Request, view)
}
pub fn new_response(sender: String, view: Option<Vec<Peer>>) -> Self {
Self::new(sender, message::MessageType::Response, view)
}
fn new(sender: String, message_type: message::MessageType, view: Option<Vec<Peer>>) -> Self {
Self {
sender,
message_type,
view
}
}
pub fn sender(&self) -> &str {
&self.sender
}
pub fn message_type(&self) -> &message::MessageType {
&self.message_type
}
pub fn view(&self) -> &Option<Vec<Peer>> {
&self.view
}
}
impl Message for PeerSamplingMessage {
fn protocol(&self) -> u8 {
MESSAGE_PROTOCOL_SAMPLING_MESSAGE
}
}