2022-12-01 16:28:19 +01:00
|
|
|
use chrono::{DateTime, LocalResult, TimeZone, Utc};
|
2022-10-19 15:58:09 +02:00
|
|
|
use prost::Message;
|
2022-11-29 10:28:32 +01:00
|
|
|
use waku_bindings::{Encoding, WakuContentTopic};
|
2022-10-19 15:58:09 +02:00
|
|
|
|
2022-12-05 10:04:42 +01:00
|
|
|
pub static TOY_CHAT_CONTENT_TOPIC: WakuContentTopic =
|
|
|
|
|
WakuContentTopic::new("toy-chat", 2, "huilong", Encoding::Proto);
|
2022-10-19 15:58:09 +02:00
|
|
|
|
|
|
|
|
#[derive(Clone, Message)]
|
|
|
|
|
pub struct Chat2Message {
|
|
|
|
|
#[prost(uint64, tag = "1")]
|
|
|
|
|
timestamp: u64,
|
|
|
|
|
#[prost(string, tag = "2")]
|
|
|
|
|
nick: String,
|
|
|
|
|
#[prost(bytes, tag = "3")]
|
|
|
|
|
payload: Vec<u8>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Chat2Message {
|
|
|
|
|
pub fn new(nick: &str, payload: &str) -> Self {
|
|
|
|
|
Self {
|
|
|
|
|
timestamp: Utc::now().timestamp() as u64,
|
|
|
|
|
nick: nick.to_string(),
|
|
|
|
|
payload: payload.as_bytes().to_vec(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pub fn message(&self) -> String {
|
|
|
|
|
String::from_utf8(self.payload.clone()).unwrap()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn nick(&self) -> &str {
|
|
|
|
|
&self.nick
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-01 16:28:19 +01:00
|
|
|
pub fn timestamp(&self) -> LocalResult<DateTime<Utc>> {
|
|
|
|
|
Utc.timestamp_opt(self.timestamp as i64, 0)
|
2022-10-19 15:58:09 +02:00
|
|
|
}
|
|
|
|
|
}
|