1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use core::{
future::Future,
pin::Pin,
};
use crate::internal::base::{
channel::*,
protocol::*,
};
pub struct SharedSession<S>
where
S: SharedProtocol,
{
pub(crate) executor: Box<
dyn FnOnce(
Receiver<(SenderOnce<()>, SenderOnce<S>)>,
) -> Pin<Box<dyn Future<Output = ()> + Send>>
+ Send,
>,
}
pub struct SharedChannel<S>
where
S: SharedProtocol,
{
pub(crate) endpoint: Sender<(SenderOnce<()>, SenderOnce<S>)>,
}
impl<S> Clone for SharedChannel<S>
where
S: SharedProtocol,
{
fn clone(&self) -> Self
{
SharedChannel {
endpoint: self.endpoint.clone(),
}
}
}