B
    (d	
                 @   s   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
ZddlmZmZ G dd deZG d	d
 d
eZG dd dZG dd dZG dd deeZG dd deeZee_G dd deje ZdS )zUFuture-returning APIs for tornado coroutines.

.. seealso::

    :mod:`zmq.asyncio`

    N)AnyType)Future)IOLoop)_AsyncPoller_AsyncSocketc               @   s   e Zd ZdS )CancelledErrorN)__name__
__module____qualname__ r   r   a/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/zmq/eventloop/future.pyr      s   r   c               @   s    e Zd ZdZdd Zdd ZdS )_TornadoFuturez2Subclass Tornado Future, reinstating cancellation.c             C   s   |   rdS | t  dS )NFT)doneset_exceptionr   )selfr   r   r   cancel   s    z_TornadoFuture.cancelc             C   s   |   ot|  tS )N)r   
isinstance	exceptionr   )r   r   r   r   	cancelled$   s    z_TornadoFuture.cancelledN)r	   r
   r   __doc__r   r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd Zdd ZdS )_CancellableTornadoTimeoutc             C   s   || _ || _d S )N)looptimeout)r   r   r   r   r   r   __init__)   s    z#_CancellableTornadoTimeout.__init__c             C   s   | j | j d S )N)r   Zremove_timeoutr   )r   r   r   r   r   -   s    z!_CancellableTornadoTimeout.cancelN)r	   r
   r   r   r   r   r   r   r   r   (   s   r   c               @   s<   e Zd ZU eZeej ed< e	j
Ze	jZdd Zdd ZdS )_AsyncTornado_Futurec             C   s   t  S )N)r   current)r   r   r   r   _default_loop9   s    z_AsyncTornado._default_loopc             C   s   |   }|||}t||S )N)	_get_loop
call_laterr   )r   delaycallbackio_loopr   r   r   r   _call_later<   s    z_AsyncTornado._call_laterN)r	   r
   r   r   r   r   asyncior   __annotations__r   READZ_READWRITEZ_WRITEr   r$   r   r   r   r   r   4   s
   
r   c               @   s   e Zd Zdd Zdd ZdS )Pollerc                s   | | fdd| dS )z"Schedule callback for a raw socketc                 s     S )Nr   )args)fr   r   <lambda>E       z*Poller._watch_raw_socket.<locals>.<lambda>N)add_handler)r   r   socketZevtr+   r   )r+   r   _watch_raw_socketC   s    zPoller._watch_raw_socketc             G   s   x|D ]}| | qW dS )z$Unschedule callback for a raw socketN)Zremove_handler)r   r   socketsr/   r   r   r   _unwatch_raw_socketsG   s    
zPoller._unwatch_raw_socketsN)r	   r
   r   r0   r2   r   r   r   r   r)   B   s   r)   c               @   s   e Zd ZeZdS )SocketN)r	   r
   r   r)   Z_poller_classr   r   r   r   r3   M   s   r3   c                   s<   e Zd ZdZdZedd Zd eedd fddZ  Z	S )ContextNc             C   s
   t | |S )N)r3   )r   socket_typer   r   r   _socket_classZ   s    zContext._socket_class)r   r*   kwargsreturnc                s@   | dd }|d k	r.tj| jj dtdd t j|| d S )Nr#   z^(io_loop) argument is deprecated in pyzmq 22.2. The currently active loop will always be used.   )
stacklevel)popwarningswarn	__class__r	   DeprecationWarningsuperr   )r   r*   r7   r#   )r>   r   r   r   ^   s    zContext.__init__)
r	   r
   r   Z	_instancer#   staticmethodr6   r   r   __classcell__r   r   )r>   r   r4   T   s   r4   )r   r%   r<   typingr   r   Ztornado.concurrentr   Ztornado.ioloopr   ZzmqZ_zmqZzmq._futurer   r   	Exceptionr   r   r   r   r)   r3   r6   r4   r   r   r   r   <module>   s   