gproxy_channel_api/
registration.rs1use std::sync::Arc;
4
5use crate::{Channel, ChannelLogin};
6
7pub struct RegisteredChannel {
9 pub channel: Arc<dyn Channel>,
10 pub login: Option<Arc<dyn ChannelLogin>>,
11}
12
13impl RegisteredChannel {
14 pub fn new(channel: Arc<dyn Channel>) -> Self {
15 Self {
16 channel,
17 login: None,
18 }
19 }
20
21 pub fn with_login(channel: Arc<dyn Channel>, login: Arc<dyn ChannelLogin>) -> Self {
22 Self {
23 channel,
24 login: Some(login),
25 }
26 }
27}
28
29pub type ChannelRegistration = fn() -> RegisteredChannel;
31
32#[cfg(all(not(target_arch = "wasm32"), feature = "external-channels"))]
34#[linkme::distributed_slice]
35pub static CHANNEL_REGISTRATIONS: [ChannelRegistration];