Skip to main content

rsiot/components/cmp_websocket_client_wasm/
component.rs

1use 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
11/// Название компонента
12pub const COMPONENT_NAME: &str = "cmp_websocket_client_wasm";
13
14#[cfg(feature = "single-thread")]
15#[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: WebsocketMessage + 'static,
22    TClientToServer: WebsocketMessage + 'static,
23{
24    async fn process(
25        &self,
26        config: Config<TMessage, TServerToClient, TClientToServer>,
27        msgbus_linker: MsgBusLinker<TMessage>,
28    ) -> Result<(), ComponentError> {
29        fn_process(config, msgbus_linker.init(COMPONENT_NAME))
30            .await
31            .map_err(|err| ComponentError::Execution(err.to_string()))
32    }
33}
34
35/// Компонент cmp_websocket_client_wasm
36pub type Cmp<TMessage, TServerToClient, TClientToServer> =
37    Component<Config<TMessage, TServerToClient, TClientToServer>, TMessage>;