slack_morphism/socket_mode/
clients_manager.rs

1use async_trait::async_trait;
2use std::sync::Arc;
3
4use crate::listener::SlackClientEventsListenerEnvironment;
5use crate::socket_mode::clients_manager_listener::SlackSocketModeClientListener;
6use crate::socket_mode::wss_client_id::SlackSocketModeWssClientId;
7use crate::*;
8
9pub trait SlackSocketModeClientsManagerFactory<SCHC>
10where
11    SCHC: SlackClientHttpConnector + Send + Sync,
12{
13    fn new_clients_manager(
14        &self,
15        listener_environment: Arc<SlackClientEventsListenerEnvironment<SCHC>>,
16    ) -> Arc<dyn SlackSocketModeClientsManager + Send + Sync>;
17}
18
19#[async_trait]
20pub trait SlackSocketModeClientsManager {
21    async fn register_new_token(
22        &self,
23        config: &SlackClientSocketModeConfig,
24        token: SlackApiToken,
25        client_listener: Arc<dyn SlackSocketModeClientListener + Sync + Send>,
26    ) -> ClientResult<()>;
27
28    async fn restart_client(&self, client_id: &SlackSocketModeWssClientId);
29
30    async fn start(&self);
31    async fn shutdown(&self);
32
33    async fn await_term_signals(&self);
34}