3
O6br                 @   s\   d Z ddlZddlZddlZeedo2ejjd Zeede	Z
dd ZG dd	 d	eZdS )
zSelect / poll helper    Npolljavaerrorc             C   s$   t | dr| jS | jr | jd S d S )Nerrnor   )hasattrr   args)exc r	   U/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/pymongo/socket_checker.py_errno_from_exception   s
    

r   c               @   s&   e Zd Zdd Zd
ddZdd Zd	S )SocketCheckerc             C   s   t rtj | _nd | _d S )N)
_HAVE_POLLselectr   _poller)selfr	   r	   r
   __init__%   s    zSocketChecker.__init__Fr   c             C   s   xy| j rtjtjB }|r*|tjB tjB }|r8|tjB }| j j|| z(|dkrTdn|d }| j j|}t	|S | j j
| X n6|r|gng }|r|gng }	tj||	|g|}t|S W q ttfk
r }
 zt|
tjtjfkrw W Y dd}
~
X qX qW dS )zSelect for reads or writes with a timeout in seconds (or None).

        Returns True if the socket is readable/writable, False on timeout.
        Ni  )r   r   POLLERRPOLLHUPPOLLINPOLLPRIPOLLOUTregisterr   bool
unregisterany_SelectErrorIOErrorr   r   ZEINTREAGAIN)r   sockreadwritetimeoutmaskZtimeout_resZrlistZwlistr   r	   r	   r
   r   +   s,    
zSocketChecker.selectc             C   sR   y| j |ddS  ttfk
r(    Y n& tk
r:   dS  tk
rL   dS X dS )zHReturn True if we know socket has been closed, False otherwise.
        T)r   N)r   RuntimeErrorKeyError
ValueError	Exception)r   r   r	   r	   r
   socket_closedR   s    zSocketChecker.socket_closedN)FFr   )__name__
__module____qualname__r   r   r(   r	   r	   r	   r
   r   #   s   
'r   )__doc__r   r   sysr   platform
startswithr   getattrOSErrorr   r   objectr   r	   r	   r	   r
   <module>   s   