std_modrpc/roles/
multi_stream_sender.rs

1#![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            Self::Stubs {
35                _phantom: std::marker::PhantomData,
36            },
37            Self::Hooks {
38                item: setup.event_tx(i.item),
39                _phantom: std::marker::PhantomData,
40            },
41        )
42    }
43}
44
45impl<T> Clone for MultiStreamSenderHooks<T> {
46    fn clone(&self) -> Self {
47        Self {
48            item: self.item.clone(),
49            _phantom: std::marker::PhantomData,
50        }
51    }
52}