o
    "i                     @   s4   d dl mZmZ d dlmZ G dd dZe ZdS )    )DictList)	WebSocketc                   @   sJ   e Zd Zdd ZdedefddZdedefddZded	efd
dZ	dS )WebSocketManagerc                 C   s
   i | _ d S N)connections)self r	   L/lsinfo/ai/hellotax_ai/training_center/backend/app/core/websocket_manager.py__init__   s   
zWebSocketManager.__init__task_id	websocketc                    s8   |  I d H  || jvrg | j|< | j| | d S r   )acceptr   appendr   r   r   r	   r	   r
   connect	   s
   

zWebSocketManager.connectc                    s:   || j v r| j | | | j | s| j |= d S d S d S r   )r   remover   r	   r	   r
   
disconnect   s   

zWebSocketManager.disconnectmessagec                    sB   || j v r| j | D ]}z
||I d H  W q   Y qd S d S r   )r   	send_json)r   r   r   
connectionr	   r	   r
   	broadcast   s   
zWebSocketManager.broadcastN)
__name__
__module____qualname__r   strr   r   r   dictr   r	   r	   r	   r
   r      s
    r   N)typingr   r   fastapir   r   managerr	   r	   r	   r
   <module>   s    
