std_modrpc/roles/
multi_stream_sender.rs1#![allow(unused_variables)]
2
3use crate::interface::MultiStreamInterface;
4use crate::proto::{MultiStreamInitState, MultiStreamItem, MultiStreamSenderConfig};
5use modrpc::{EventTx, InterfaceRole, RoleSetup};
6
7pub struct MultiStreamSenderHooks<T> {
8 pub item: EventTx<MultiStreamItem<T>>,
9 _phantom: std::marker::PhantomData<T>,
10}
11
12pub struct MultiStreamSenderStubs<T> {
13 _phantom: std::marker::PhantomData<T>,
14}
15
16pub struct MultiStreamSenderRole<T> {
17 _phantom: std::marker::PhantomData<T>,
18}
19
20impl<T: mproto::Owned> InterfaceRole for MultiStreamSenderRole<T> {
21 type Interface = MultiStreamInterface<T>;
22 type Config = MultiStreamSenderConfig;
23 type Init = MultiStreamInitState;
24 type Stubs = MultiStreamSenderStubs<T>;
25 type Hooks = MultiStreamSenderHooks<T>;
26
27 fn setup_worker(
28 i: &Self::Interface,
29 setup: &mut RoleSetup,
30 config: &Self::Config,
31 init: &Self::Init,
32 ) -> (Self::Stubs, Self::Hooks) {
33
34 (
35 Self::Stubs {
36 _phantom: std::marker::PhantomData,
37 },
38 Self::Hooks {
39 item: setup.event_tx(i.item),
40 _phantom: std::marker::PhantomData,
41 },
42 )
43 }
44}
45
46impl<T> Clone for MultiStreamSenderHooks<T> {
47 fn clone(&self) -> Self {
48 Self {
49 item: self.item.clone(),
50 _phantom: std::marker::PhantomData,
51 }
52 }
53}