use crate::{Message, MsgId};
use async_std::{
sync::{Arc, Mutex},
task,
};
use netmod::{Frame, SeqId as SeqData, Sequence};
use std::collections::BTreeMap;
type SeqId = [u8; 16];
#[derive(Default)]
pub(crate) struct Collector {
frags: Mutex<BTreeMap<SeqId, Vec<Frame>>>,
}
impl Collector {
pub(crate) fn new() -> Arc<Self> {
Arc::new(Self::default())
}
pub(crate) async fn completed(&self) -> Message {
unimplemented!()
}
pub(crate) fn run(self: Arc<Self>) {
task::spawn(async move {});
}
pub(crate) async fn queue(&self, f: Frame) {
let seqid = f.seqid.seqid;
self.frags.lock().await.entry(seqid).or_default().push(f);
}
}