rsiot/components_config/websocket_server/
config.rs

1use crate::{message::Message, serde_utils::SerdeAlgKind};
2
3use super::WebsocketMessage;
4
5/// Конфигурация Websocket-сервера
6#[derive(Clone, Debug)]
7pub struct Config<TMsg, TServerToClient, TClientToServer>
8where
9    TServerToClient: WebsocketMessage,
10    TClientToServer: WebsocketMessage,
11{
12    /// Алгоритм сериализации и десериализации сообщений
13    pub serde_alg: SerdeAlgKind,
14
15    /// Порт, через который доступен сервер
16    pub port: u16,
17
18    /// Функция преобразования входящих сообщений в перечисление, пересылаемое по вебсокету
19    pub fn_server_to_client: FnInput<TMsg, TServerToClient>,
20
21    /// Функция перечисления, пересылаемых по вебсокету, в исходящий поток сообщений
22    pub fn_client_to_server: FnOutput<TMsg, TClientToServer>,
23}
24
25/// Функция преобразования входящих сообщений в перечисление, пересылаемое по вебсокету
26pub type FnInput<TMsg, TServerToClient> = fn(&Message<TMsg>) -> Option<TServerToClient>;
27/// Функция перечисления, пересылаемых по вебсокету, в исходящий поток сообщений
28pub type FnOutput<TMsg, TClientToServer> = fn(TClientToServer) -> Vec<Message<TMsg>>;