Coverage for slack_bot / shell / manager.py: 0%
21 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-02 17:44 +0800
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-02 17:44 +0800
1from typing import Dict
2from .session import ShellSession
3from health.utils.logging_config import setup_logger
5logger = setup_logger(__name__)
7class ShellManager:
8 _instance = None
9 _sessions: Dict[str, ShellSession] = {}
11 def __new__(cls):
12 if cls._instance is None:
13 cls._instance = super(ShellManager, cls).__new__(cls)
14 return cls._instance
16 def get_session(self, channel_id: str) -> ShellSession:
17 if channel_id not in self._sessions or not self._sessions[channel_id].is_alive():
18 logger.info(f"Creating new ShellSession for channel {channel_id}")
19 self._sessions[channel_id] = ShellSession()
20 return self._sessions[channel_id]
22 def close_session(self, channel_id: str):
23 if channel_id in self._sessions:
24 logger.info(f"Closing ShellSession for channel {channel_id}")
25 self._sessions[channel_id].close()
26 del self._sessions[channel_id]