B
    (d                 @   s^   d Z ddlZddlZddlmZmZ ddlZddlmZ ddl	m
Z
 G dd de
ZdgZdS )	zOZAP Authenticator integrated with the asyncio IO loop.

.. versionadded:: 15.2
    N)AnyOptional)Poller   )Authenticatorc                   sz   e Zd ZU dZee ed< eed< ded eeed fdd	Z	dd
ddZ
dd
 fddZdd
 fddZ  ZS )AsyncioAuthenticatorz1ZAP authentication for use in the asyncio IO loop_AsyncioAuthenticator__poller_AsyncioAuthenticator__taskNutf-8zzmq.Context)contextloopencodinglogc                sB   t  ||| |d k	r2tj| jj dtdd d | _d | _d S )Nz (loop) is deprecated and ignored   )
stacklevel)	super__init__warningswarn	__class____name__DeprecationWarningr   r	   )selfr   r   r   r   )r    ]/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/zmq/auth/asyncio.pyr      s    zAsyncioAuthenticator.__init__)returnc                sL   xF| j d k	rF| j  I d H }| jt|kr| j }| |I d H  qW d S )N)r   poll
zap_socketdictZrecv_multipartZhandle_zap_message)r   eventsmsgr   r   r   Z__handle_zap*   s
    
z!AsyncioAuthenticator.__handle_zapc                s8   t    t | _| j| jtj t	| 
 | _dS )zStart ZAP authenticationN)r   startr   r   registerr   zmqPOLLINasyncioensure_future!_AsyncioAuthenticator__handle_zapr	   )r   )r   r   r   r!   1   s    
zAsyncioAuthenticator.startc                s8   | j r| j   | jr*| j| j d| _t   dS )zStop ZAP authenticationN)r	   cancelr   
unregisterr   r   stop)r   )r   r   r   r*   8   s    
zAsyncioAuthenticator.stop)NNr
   N)r   
__module____qualname____doc__r   r   __annotations__r   strr   r'   r!   r*   __classcell__r   r   )r   r   r      s   
   r   )r-   r%   r   typingr   r   r#   Zzmq.asyncior   baser   r   __all__r   r   r   r   <module>   s   /