
†Kðh  ã               @   s,  d  d l  Z  d  d l Z d  d l Z d  d l m Z y d  d l m Z Wn" e k
 rl d  d l m Z Yn Xd d d g Z Gd d „  d e	 ƒ Z
 e j d k r° d d „  Z n d d „  Z d d d d d „ Z d d d d d „ Z d d „  Z d d „  Z d d „  a d d d „ Z d d d „ Z d S)é    N)Úpartial)Ú	monotonic)ÚtimeÚNoWayToWaitForSocketErrorÚwait_for_readÚwait_for_writec               @   s   e  Z d  Z d S)r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   úM/mod/web/acousticsspace/venv/lib/python3.5/site-packages/urllib3/util/wait.pyr      s   é   é   c             C   s
   |  | ƒ S)Nr   )ÚfnÚtimeoutr   r   r   Ú_retry_on_intr*   s    r   c             C   sÈ   | d  k r t  d ƒ } n t ƒ  | } x™ y |  | ƒ SWq+ t t j f k
 r¿ } z[ | j d t j k rs ‚  n: | t ƒ  } | d k  r’ d } | t  d ƒ k rª d  } w+ WYd  d  } ~ Xq+ Xq+ Wd  S)NÚinfr   )Úfloatr   ÚOSErrorÚselectÚerrorÚargsÚerrnoZEINTR)r   r   ÚdeadlineÚer   r   r   r   0   s    Fc       
      C   s’   | r | r t  d ƒ ‚ g  } g  } | r9 | j |  ƒ | rL | j |  ƒ t t j | | | ƒ } t | | ƒ \ } } }	 t | pŽ | pŽ |	 ƒ S)Nz2must specify at least one of read=True, write=True)ÚRuntimeErrorÚappendr   r   r   Úbool)
ÚsockÚreadÚwriter   ÚrcheckÚwcheckr   ÚrreadyÚwreadyÚxreadyr   r   r   Úselect_wait_for_socketG   s    r&   c                s‡   | r | r t  d ƒ ‚ d } | r3 | t j O} | rF | t j O} t j ƒ  ‰  ˆ  j |  | ƒ ‡  f d d †  } t t | | ƒ ƒ S)Nz2must specify at least one of read=True, write=Truer   c                s#   |  d  k	 r |  d 9}  ˆ  j  |  ƒ S)Niè  )Úpoll)Út)Úpoll_objr   r   Údo_pollf   s    
z%poll_wait_for_socket.<locals>.do_poll)r   r   ÚPOLLINÚPOLLOUTr'   Úregisterr   r   )r   r   r    r   Úmaskr*   r   )r)   r   Úpoll_wait_for_socketZ   s    r/   c              O   s   t  d ƒ ‚ d  S)Nzno select-equivalent available)r   )r   Úkwargsr   r   r   Únull_wait_for_socketn   s    r1   c              C   sG   y  t  j ƒ  }  t |  j d ƒ Wn t t f k
 r> d SYn Xd Sd  S)Nr   FT)r   r'   r   ÚAttributeErrorr   )r)   r   r   r   Ú_have_working_pollr   s    	r3   c              O   s=   t  ƒ  r t a n t t d ƒ r* t a n t a t |  | Ž  S)Nr   )r3   r/   Úwait_for_socketÚhasattrr   r&   r1   )r   r0   r   r   r   r4      s    			r4   c             C   s   t  |  d d d | ƒS)z†Waits for reading to be available on a given socket.
    Returns True if the socket is readable, or False if the timeout expired.
    r   Tr   )r4   )r   r   r   r   r   r   Ž   s    c             C   s   t  |  d d d | ƒS)z†Waits for writing to be available on a given socket.
    Returns True if the socket is readable, or False if the timeout expired.
    r    Tr   )r4   )r   r   r   r   r   r   •   s    )r   r   )r   r   ÚsysÚ	functoolsr   r   r   ÚImportErrorÚ__all__Ú	Exceptionr   Úversion_infor   r&   r/   r1   r3   r4   r   r   r   r   r   r   Ú<module>   s&   