//! Pub-sub traits
use super::*;
use std::any::TypeId;
use std::collections::HashMap;
use std::sync::Arc;
use tokio::sync::{
    RwLock,
    mpsc,
};

use message::Message;

#[derive(Debug)]
struct SubListInner
{
    //TODO: how tf do we do this?
    //subs: RwLock<HashMap<TypeID, RwLock<Vec<mpsc::Sender<message::SerializedMessage<dyn message::MessageValue>>>>>>,
}

/// List of subscibers
#[derive(Debug, Clone)]
pub struct SubscriberListRef(Arc<SubListInner>);