
    sj
                         d dl mZ d dlmZ d dlmZ d dlmZ  G d de      Zda	ddZ
 G d	 d
      Z G d de      Zd Zd Zy)    )partial)get_ipython)GenericServer)EventEmitterc                   8     e Zd Zd fd	Zd Zd Zd Zd Z xZS )WsJupyterCommc                     t         |           d | _        |t               j                  n|| _        | j                  j
                  j                  d| j                         y )Nwslink_comm)super__init__commr   kernelcomm_managerregister_targeton_open)selfr   	__class__s     I/DATA/.local/lib/python3.12/site-packages/wslink/backends/jupyter/core.pyr   zWsJupyterComm.__init__
   sH    	.4nkm**&  00M    c                 X    | j                   | j                   j                  ||       y y )N)databuffers)r   send)r   r   r   s      r   r   zWsJupyterComm.send   s%    99 IINNgN6 !r   c                 <    | j                  d|d   d   |d          y )Nmessagecontentr   r   )emit)r   msgs     r   
on_messagezWsJupyterComm.on_message   s    		)S^F3S^Dr   c                     d | _         y N)r   )r   _s     r   on_closezWsJupyterComm.on_close   	    	r   c                 ~    || _         |j                  | j                         |j                  | j                         y r!   )r   on_msgr   r#   )r   r   r"   s      r   r   zWsJupyterComm.on_open   s)    	DOO$dmm$r   r!   )	__name__
__module____qualname__r   r   r   r#   r   __classcell__r   s   @r   r   r   	   s    N7E%r   r   Nc                 0    t         t        |       a t         S r!   )JUPYTER_COMMr   )r   s    r   get_jupyter_commr.   #   s    $V,r   c                       e Zd Zd Zy)GenericMessagec                     || _         y r!   )r   )r   r   s     r   r   zGenericMessage.__init__,   r$   r   N)r'   r(   r)   r    r   r   r0   r0   +   s    r   r0   c                   *     e Zd Z fdZd Zd Z xZS )JupyterGenericServerc                 (   t         |   |       t               | _        | | j                  d      | _        | j
                  j                  j                  j                  | _	        i | _
        | j                  j                  d| j                         y )Nr   r   )r   r   r.   
trame_commws_endpoints	_endpointserverProtocolservername_name_connectionsadd_event_listeneron_msg_from_comm)r   server_configr   s     r   r   zJupyterGenericServer.__init__1   sp    '*,d//23^^2299>>
**9d6K6KLr   c                    K   g }| j                   |d}|r|j                  |       n||d<   | j                  j                  ||       y w)N)r:   clientpayload)r<   appendr6   r   )r   	client_idbinaryr   r   r   s         r   on_msg_from_serverz'JupyterGenericServer.on_msg_from_server:   sE     **	:NN7#%DOT7+s   AA
c                   K   |d   }|d   }|| j                   k7  ry | j                  j                  |d       }|V| j                  j	                          d {   }|j                  t        | j                  |             || j                  |<   t        |      dkD  }d }|rt        |d         }nt        |d         }|j                  ||       d {    y 7 7 w)Nr:   rB   r   rC   )r<   r=   getr8   connectr   r   rG   lenr0   r   )r   r   r   server_namerE   
connection	is_binaryr   s           r   r?   z%JupyterGenericServer.on_msg_from_commE   s     8nN	$**$&&**9d;
#~~5577J!!'$*A*A9"MN+5Di(L1$	$WQZ0G$T)_5Gooi111 8 	2s%   ACCA<CCCC)r'   r(   r)   r   rG   r?   r*   r+   s   @r   r4   r4   0   s    M	,2r   r4   c                      d}t        |      )Nz+Generic backend does not provide a launcher)NotImplementedError)r"   __r   s      r   startWebServerrR   _   s    
7C
c
""r   c                     t        |       S r!   )r4   )r@   s    r   create_webserverrT   d   s    ..r   r!   )	functoolsr   IPython.core.getipythonr   wslink.backends.generic.corer   wslink.emitterr   r   r-   r.   r0   r4   rR   rT   r2   r   r   <module>rY      sJ     / 6 '%L %.  
,2= ,2^#
/r   