File: //usr/local/lib/python3.7/site-packages/urllib3/util/__pycache__/wait.cpython-37.pyc
B
���gG � @ s� d dl mZ d dlZd dlZd dlmZ ddgZddddd dd
�dd�Zddddd dd
�d
d�Zdd�dd�Z ddddd dd
�dd�a
ddd dd�dd�Zddd dd�dd�ZdS )� )�annotationsN)�partial�
wait_for_read�wait_for_writeFz
socket.socket�boolzfloat | None)�sock�read�write�timeout�returnc
C sb |s|st d��g }g }|r&|�| � |r4|�| � ttj|||�}||�\}}} t|p^|p^| �S )Nz2must specify at least one of read=True, write=True)�RuntimeError�appendr �selectr )
r r r r
�rcheck�wcheck�fn�rready�wready�xready� r �;/usr/local/lib/python3.7/site-packages/urllib3/util/wait.py�select_wait_for_socket! s
r c sd |s|st d��d}|r"|tjO }|r0|tjO }t�� � � �| |� ddd�� fdd�}t||��S )Nz2must specify at least one of read=True, write=Truer zfloat | Nonezlist[tuple[int, int]])�tr c s | d k r| d9 } � � | �S )Ni� )�poll)r )�poll_objr r �do_pollJ s z%poll_wait_for_socket.<locals>.do_poll)r r �POLLIN�POLLOUTr �registerr )r r r r
�maskr r )r r �poll_wait_for_socket9 s
r )r c C s8 yt �� } | �d� W n ttfk
r. dS X dS d S )Nr FT)r r �AttributeError�OSError)r r r r �_have_working_pollR s r# c C s( t � rtanttd�rtat| |||�S )Nr )r# r �wait_for_socket�hasattrr r )r r r r
r r r r$ _ s
r$ )r r
r c C s t | 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.
T)r r
)r$ )r r
r r r r q s c C s t | 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.
T)r r
)r$ )r r
r r r r x s )FFN)FFN)FFN)N)N)
�
__future__r r �socket� functoolsr �__all__r r r# r$ r r r r r r �<module> s