rsiot/components/cmp_websocket_client/
component.rs1use async_trait::async_trait;
2
3use crate::{
4 components_config::websocket_general::WebsocketMessage,
5 executor::{Component, ComponentError, IComponentProcess, MsgBusLinker},
6 message::MsgDataBound,
7};
8
9use super::{config::Config, fn_process::fn_process};
10
11pub const COMPONENT_NAME: &str = "cmp_websocket_client";
13
14#[cfg_attr(not(feature = "single-thread"), async_trait)]
15#[cfg_attr(feature = "single-thread", async_trait(?Send))]
16impl<TMessage, TServerToClient, TClientToServer>
17 IComponentProcess<Config<TMessage, TServerToClient, TClientToServer>, TMessage>
18 for Component<Config<TMessage, TServerToClient, TClientToServer>, TMessage>
19where
20 TMessage: MsgDataBound + 'static,
21 TServerToClient: 'static + WebsocketMessage,
22 TClientToServer: 'static + WebsocketMessage,
23{
24 async fn process(
25 &self,
26 config: Config<TMessage, TServerToClient, TClientToServer>,
27 msgbus_linker: MsgBusLinker<TMessage>,
28 ) -> Result<(), ComponentError> {
29 fn_process(msgbus_linker.init(COMPONENT_NAME), config).await?;
30 Ok(())
31 }
32}
33
34pub type Cmp<TMessage, TServerToClient, TClientToServer> =
36 Component<Config<TMessage, TServerToClient, TClientToServer>, TMessage>;