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