
    Mh                         d Z ddlZddlmZmZ ddlmZmZmZ ddl	Z	ddl
Z	ddlmZ  G d de          Z G d	 d
e          Zd
gZdS )z>ZAP Authenticator in a Python Thread.

.. versionadded:: 14.1
    N)EventThread)AnyListOptional   )Authenticatorc                        e Zd ZU dZej        ed<   ej        ed<   e	ed<   dZ
eej        j                 ed<   de	dej        ddf fdZdd	Zd
 Zdee         defdZ xZS )AuthenticationThreadzgA Thread for running a zmq Authenticator

    This is run in the background by ThreadAuthenticator
    pipeloopauthenticatorNpollerreturnc                     t                                          d           || _        |j        | _        || _        t                      | _        d S )NT)daemon)super__init__r   logr   r   started)selfr   r   	__class__s      O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/zmq/auth/thread.pyr   zAuthenticationThread.__init__   sH    
 	%%%* $	ww    c                 r   t          j                    }	 |                    |                                            | j        r | j                                         d| _        |                                 dS # | j        r | j                                         d| _        |                                 w xY w)z*Start the Authentication Agent thread taskN)asyncionew_event_looprun_until_complete_runr   close)r   r   s     r   runzAuthenticationThread.run*   s     %''	##DIIKK000y !	!!! 	JJLLLLL	 y !	!!! 	JJLLLLs   'A9 9=B6c                   K   t           j                                        | _        | j                            | j        t           j                   | j                            | j        j        t           j                   | j	        
                                 	 t          | j                                         d {V           }| j        |v r0| j                                        }|                     |          rd S | j        j        |v r>| j        j                                        }| j                            |           d {V  N)zmqr   Pollerr   registerr   POLLINr   
zap_socketr   setdictpollrecv_multipart_handle_pipe_messagehandle_zap_message)r   eventsmsgs      r   r   zAuthenticationThread._run7   s0     k((**TY
333T/:CJGGG	A 0 0 2 222222233FyF""i..00,,S11 F!,66(3BBDD(;;C@@@@@@@@@	Ar   r0   c                     |d         }| j                             d|           |dk    rdS | j                             d|           | j                            d           dS )Nr   zauth received API command %r	   TERMINATETz!Invalid auth command from API: %rs   ERRORF)r   debugerrorr   send)r   r0   commands      r   r-   z)AuthenticationThread._handle_pipe_messageG   sd    a&5w???l""4 HNN>HHHINN8$$$ur   r   N)__name__
__module____qualname____doc__r$   Socket__annotations__r   AbstractEventLoopr	   r   r   r%   r   r!   r   r   bytesboolr-   __classcell__r   s   @r   r   r      s          
 *

####    +/FHS['(///
$
 j
 
	
 
 
 
 
 
   A A A U         r   r   c                        e Zd ZU dZded<   dZeed<   eed<   	 	 	 dd	ed
         dede	f fdZ
d fdZd fdZdefdZddZ xZS )ThreadAuthenticatorz-Run ZAP authentication in a background threadz
zmq.Socketr    pipe_endpointthreadNutf-8contextzzmq.Contextencodingr   c                     t                                          |||           d | _        dt          |            d| _        d | _        d S )N)rI   rJ   r   z	inproc://z.inproc)r   r   r   idrF   rG   )r   rI   rJ   r   r   s       r   r   zThreadAuthenticator.__init__\   sO     	8EEE	:D:::r   r   c                 f   t                                                       | j                            t          j        t          j                  | _        d| j        _        | j        	                    | j
                   | j                            t          j        t          j                  }d|_        |                    | j
                   t          | |          | _        | j                                         | j        j                            d          st!          d          dS )zStart the authentication thread)socket_classr   )r   r   
   )timeoutz$Authenticator thread failed to startN)r   startrI   socketr$   PAIRr<   r   lingerbindrF   connectr   rG   r   waitRuntimeError)r   thread_piper   s     r   rQ   zThreadAuthenticator.startg   s     	 L''sz'JJ			t)***l))#()LLD.///*KPPP{"'''33 	GEFFF	G 	Gr   c                 2   | j         rn| j                             d           |                                 r| j                                         d| _        | j                                          d| _         t                                                       dS )zStop the authentication threadr2   N)r   r5   is_aliverG   joinr    r   stop)r   r   s    r   r]   zThreadAuthenticator.stopx   sz    9 	INN<(((}} #  """DKIOODIr   c                 \    t          | j        o| j                                                  S )z$Is the ZAP thread currently running?)r@   rG   r[   r   s    r   r[   zThreadAuthenticator.is_alive   s%    DK:DK$8$8$:$:;;;r   c                 .    |                                   d S r#   )r]   r_   s    r   __del__zThreadAuthenticator.__del__   s    		r   )NrH   Nr7   )r8   r9   r:   r;   r=   rF   strr   r   r   r   rQ   r]   r@   r[   ra   rA   rB   s   @r   rD   rD   U   s        77
M3     ,0		 	-(	 	 		 	 	 	 	 	G G G G G G"	 	 	 	 	 	<$ < < < <       r   rD   )r;   r   	threadingr   r   typingr   r   r   r$   zmq.asynciobaser	   r   rD   __all__ r   r   <module>ri      s      # # # # # # # # & & & & & & & & & & 



          ? ? ? ? ?6 ? ? ?D3 3 3 3 3- 3 3 3l !
!r   