use std::sync::Arc;
use crate::{Channel, ChannelLogin};
pub struct RegisteredChannel {
pub channel: Arc<dyn Channel>,
pub login: Option<Arc<dyn ChannelLogin>>,
}
impl RegisteredChannel {
pub fn new(channel: Arc<dyn Channel>) -> Self {
Self {
channel,
login: None,
}
}
pub fn with_login(channel: Arc<dyn Channel>, login: Arc<dyn ChannelLogin>) -> Self {
Self {
channel,
login: Some(login),
}
}
}
pub type ChannelRegistration = fn() -> RegisteredChannel;
#[cfg(all(not(target_arch = "wasm32"), feature = "external-channels"))]
#[linkme::distributed_slice]
pub static CHANNEL_REGISTRATIONS: [ChannelRegistration];