2020-03-25 22:50:32 +01:00
|
|
|
use crate::messages::Event;
|
2020-03-27 17:00:48 +01:00
|
|
|
use crate::parse_client_request::Timeline;
|
2020-04-01 21:35:24 +02:00
|
|
|
|
2020-03-25 22:50:32 +01:00
|
|
|
use std::{
|
|
|
|
collections::{HashMap, VecDeque},
|
|
|
|
fmt,
|
|
|
|
};
|
2019-10-09 20:46:56 +02:00
|
|
|
use uuid::Uuid;
|
|
|
|
|
2020-03-19 01:37:10 +01:00
|
|
|
#[derive(Clone)]
|
2019-10-09 20:46:56 +02:00
|
|
|
pub struct MsgQueue {
|
2020-03-19 01:37:10 +01:00
|
|
|
pub timeline: Timeline,
|
2020-03-25 22:50:32 +01:00
|
|
|
pub messages: VecDeque<Event>,
|
2020-03-19 01:37:10 +01:00
|
|
|
}
|
2019-10-09 20:46:56 +02:00
|
|
|
|
|
|
|
impl MsgQueue {
|
2020-03-19 01:37:10 +01:00
|
|
|
pub fn new(timeline: Timeline) -> Self {
|
2019-10-09 20:46:56 +02:00
|
|
|
MsgQueue {
|
2020-03-25 22:50:32 +01:00
|
|
|
messages: VecDeque::new(),
|
2020-04-05 23:54:05 +02:00
|
|
|
|
2020-03-19 01:37:10 +01:00
|
|
|
timeline,
|
2019-10-09 20:46:56 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
2020-03-25 22:50:32 +01:00
|
|
|
pub struct MessageQueues(pub HashMap<Uuid, MsgQueue>);
|
2019-10-09 20:46:56 +02:00
|
|
|
|
2020-04-05 23:54:05 +02:00
|
|
|
impl MessageQueues {}
|
2019-10-09 20:46:56 +02:00
|
|
|
|
2020-04-01 21:35:24 +02:00
|
|
|
impl fmt::Debug for MsgQueue {
|
|
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"\
|
|
|
|
MsgQueue {{
|
|
|
|
timeline: {:?},
|
2020-04-05 23:54:05 +02:00
|
|
|
messages: {:?},
|
2020-04-01 21:35:24 +02:00
|
|
|
}}",
|
2020-04-05 23:54:05 +02:00
|
|
|
self.timeline, self.messages,
|
2020-04-01 21:35:24 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-10-09 20:46:56 +02:00
|
|
|
impl std::ops::Deref for MessageQueues {
|
2020-03-25 22:50:32 +01:00
|
|
|
type Target = HashMap<Uuid, MsgQueue>;
|
2019-10-09 20:46:56 +02:00
|
|
|
fn deref(&self) -> &Self::Target {
|
|
|
|
&self.0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
impl std::ops::DerefMut for MessageQueues {
|
|
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
|
|
&mut self.0
|
|
|
|
}
|
|
|
|
}
|