
    hr                         d Z ddlZddlZddlZ eed      xr ej
                  j                  d       Z eede	      Z
d Z G d de      Zy)	zSelect / poll helper    Npolljavaerrorc                 j    t        | d      r| j                  S | j                  r| j                  d   S y )Nerrnor   )hasattrr   args)excs    Y/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/pymongo/socket_checker.py_errno_from_exceptionr      s.    sGyy
xxxx{    c                        e Zd Zd ZddZd Zy)SocketCheckerc                 R    t         rt        j                         | _        y d | _        y )N)
_HAVE_POLLselectr   _poller)selfs    r   __init__zSocketChecker.__init__%   s    !;;=DLDLr   c                    	 	 | j                   rt        j                  t        j                  z  }|r$|t        j                  z  t        j
                  z  }|r|t        j                  z  }| j                   j                  ||       	 |dn|dz  }| j                   j                  |      }t        |      | j                   j                  |       S |r|gng }|r|gng }	t        j                  ||	|g|      }t        |      S # | j                   j                  |       w xY w# t        t        f$ r7}
t        |
      t        j                   t        j"                  fv rY d}
~
c d}
~
ww xY w)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   EINTREAGAIN)r   sockreadwritetimeoutmasktimeout_resrlistwlistr
   s              r   r   zSocketChecker.select+   s,   
 <<!>>FNN:D#fmm3fnnD#fnn4LL))$56 ,3?4$"ll//9
  $Cy//5&*TFE&+TFE --utfgFC s8O //5 !'* (-%++u||1LLs<   BD$ .D 6D$ 1D$ D!!D$ $E*3+E%$E%%E*c                 z    	 | j                  |d      S # t        t        f$ r  t        $ r Y yt        $ r Y yw xY w)zHReturn True if we know socket has been closed, False otherwise.
        T)r%   )r   RuntimeErrorKeyError
ValueError	Exception)r   r$   s     r   socket_closedzSocketChecker.socket_closedR   sM    	;;t$;//h' 	
  	  	 	s    :::N)FFr   )__name__
__module____qualname__r   r   r2    r   r   r   r   #   s     %Nr   r   )__doc__r   r   sysr   platform
startswithr   getattrOSErrorr    r   objectr   r6   r   r   <module>r>      sY       
 VV$LS\\-D-DV-L)L
vw0BF Br   