slack_morphism/socket_mode/
clients_manager.rs1use 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}